Resolve issues with long long types.

Resolve the issues we've had with long long types by removing their
use altogether. They aren't safe in the first place because they
aren't provided by versions of the C++ spec we want to support,
despite being supported as extensions in most modern
compilers. Instead, make sure 64-bit values are accessible if we have
a 64-bit type, either through 64-bit longs or the Boost 64-bit
types. This makes the width explicit whenever possible (i.e. the cases
where we'd need to use long long) and the user will simply have to
cast to the appropriate type if they don't have a matching
type (although that shouldn't be an issue since the 64-bit types
should just be aliases of normal types on most platforms).
Add .gitignore for build directory.