some comments towards understanding AM guts

Add comments here and there when something about AM's guts is
understood more clearly. Hopefully we can fill in those ???'s later.
add carry and carry_replace macros

Add the `carry` and `carry_replace` macros so that it is easier to
understand what all of the bit-twiddling array logic is. Everytime
there is a `count[i+1] = count[i] >> 16; count[i] &= 0xffff`, that
is just a carry operation for a big integer, which is represented via
`unsigned long[8]` in AM.
add AM_BIG_INT

Add an `AM_BIG_INT` type to represent the `unsigned long[8]`
big integers used throughout AM.
add high_bits and low_bits

Add high_bits and low_bits macros to make bit-twiddling slightly more
transparent. Reorganize macros and typedefs.
add carry_pointer macro

I don't really like how this macro looks; it's not very transparent to
me. However, this allows us to gather all of the carrying logic into
one place.