Add the ability to pull string to the binary reader

Added Pull() and >> to the BinaryReader.

They calcualte the length of the string, read it into the pointer and
advance the the offset of the reader.

A separate template is designed to take any piece of POD, calculate its
size and reads into it, again advancing the offset. Tests / bug fixes
for this will follow in a seprate commit
Add tests to validate pulling PODs

Testes validate that arbitrary PODs can be extracted from a
BinaryReader object using the new streaming operator which:

1. Calculates the size of the object using sizeof
2. Copes the data into the address of the rhs
3. Advances the reader offset by the size of.

For example:
   for ( i=0; i<10; ++i ) {
       Elf64_Ehdr header;
       reader >> header;
       /* do something with the ith header stored in the reader */
   }

Fixes #31