(Binary Analysis) Avoid assertion for MemoryMap::NullBuffer reads for is_zero()
(Binary Analysis) Partitioner change to detect relocated symbols

The Partitioner failed to find functions identified with a symbol
if the section containing the function was mapped to an address
other than the section's preferred address.
(Binary Analysis) Disassembler tool can pre-reserve addresses

Added a --reserve switch to the "disassemble" so that regions
of the virtual address space can be reserved before the tool tries
to load the specimen and its libraries.  One use for this is to
force a dynamic object specimen to be loaded to a higher address
than the default, which is zero. E.g.,

$ ./disassemble --reserve=0,0x08000000 libfoo.so

causes the library to load at 0x08000000 because all addresses
below that have been taken.
(Clone Detection) Use BinaryLoader to relocate dynamic object specimens

This commit replaces the hack that relocates a specimen which is a
dynamic object (*.so). The old method was to change the DO's base
virtual address. The new method temporarily allocates a restricted
area in the low part of the address space, then calls the BinaryLoader
to map the DO into memory, then releases the low addresses.  This
has the benefit of also applying relocation fixups.