I want to keep track of how many reads are overlapping each nucleotide in my genome, so that I can quickly get the number of overlapping reads with dict[chromosome][strand][nucleotide].

This is possible with intervaltrees from bx-python, but afair, that module did not work with multiprocessing, and it might not be the fastest for this specific task.

Are there other modules/packages that do this?
With python you have a few options depending on your expertise. The numbering does not reflect my perferences. The ease and speed of each option I listed is dependent on the size of your input and the number of regions to parse. If you have a lot of regions I would recommend using samtools. 

 1. [pybedtools][1] is a great wrapper of Bedtools in python. It can get slow depending on how many times you call the functions and how large your data are. However if you're familiar with intersection positions in Bedtools this should be a breeze! 
 2. Cython. You can use C types and np.ndarrays to iterate much faster in Cython
 3. Use samtools: For your question
>  how many reads are overlapping each nucleotide 

  `samtools depth` is perfect for this! 

 4. pysam: same thing a 3. But now you are using a htslib API in python. 

  [1]: https://pythonhosted.org/pybedtools/