AddressMapping: precompute log2 values to increase performance

The log2 function is slow. But this is not the issue; calling it
in the hot path is the real (performance) issue.

The appended precomputes frequently-used values to avoid computing
them in the hot path. This results in a lot less instructions
executed, and a significant increase in performance.

This closes issue #46: simulation performance.

Before the patch:

 Performance counter stats for './DRAMSim -t traces/k6_aoe_02_short.trc -d ini/DDR3_micron_16M_8B_x8_sg15.ini -s system.ini.example -c 10000000' (3 runs):

      20507.071226 task-clock                #    1.000 CPUs utilized            ( +-  1.09% )
                61 context-switches          #    0.000 M/sec                    ( +-  0.95% )
                 0 CPU-migrations            #    0.000 M/sec
               468 page-faults               #    0.000 M/sec
    58,683,786,689 cycles                    #    2.862 GHz                      ( +-  0.69% ) [83.33%]
    13,434,240,170 stalled-cycles-frontend   #   22.89% frontend cycles idle     ( +-  2.80% ) [83.34%]
     5,915,970,070 stalled-cycles-backend    #   10.08% backend  cycles idle     ( +-  4.87% ) [66.67%]
   120,280,797,002 instructions              #    2.05  insns per cycle
                                             #    0.11  stalled cycles per insn  ( +-  0.00% ) [83.33%]
    23,425,385,282 branches                  # 1142.308 M/sec                    ( +-  0.01% ) [83.34%]
       226,637,631 branch-misses             #    0.97% of all branches          ( +-  1.03% ) [83.33%]

      20.514895432 seconds time elapsed                                          ( +-  1.09% )

After:

 Performance counter stats for './DRAMSim -t traces/k6_aoe_02_short.trc -d ini/DDR3_micron_16M_8B_x8_sg15.ini -s system.ini.example -c 10000000' (3 runs):

      14015.117288 task-clock                #    1.000 CPUs utilized            ( +-  1.02% )
                58 context-switches          #    0.000 M/sec                    ( +- 10.11% )
                 0 CPU-migrations            #    0.000 M/sec                    ( +-100.00% )
               467 page-faults               #    0.000 M/sec
    39,609,908,343 cycles                    #    2.826 GHz                      ( +-  0.50% ) [83.33%]
     9,797,983,314 stalled-cycles-frontend   #   24.74% frontend cycles idle     ( +-  2.11% ) [83.33%]
     5,119,893,396 stalled-cycles-backend    #   12.93% backend  cycles idle     ( +-  1.57% ) [66.67%]
    75,126,820,352 instructions              #    1.90  insns per cycle
                                             #    0.13  stalled cycles per insn  ( +-  0.00% ) [83.34%]
    13,072,793,821 branches                  #  932.764 M/sec                    ( +-  0.01% ) [83.35%]
       172,600,788 branch-misses             #    1.32% of all branches          ( +-  3.76% ) [83.34%]

      14.020889029 seconds time elapsed                                          ( +-  1.02% )

Signed-off-by: Emilio G. Cota <cota@braap.org>