Allow ConditionalStorage to use a pre-allocated boost::shared_array

This is a starting place to reduce the amount of memory required to
de-serialize large data inside JobContents.
Allow extraction from a buffer into a pure c character array.
JobContent de-serialization from char* requires one less copy now.

Instead of copying the entire message into an std::string and than
passing that to the buffer, we instead fill the buffer directly
with the char*.
Reduce memory when extracting JobContent by using boost shared_array.

By using shared_array we can remove a ConditionalStorage and std::vector copy
from happening reducing the amount of temporary memory to extract a serialized
JobContent.
Merge pull request #166 from robertmaynard/reduce_jobcontent_mem_usage

Reduce jobcontent mem usage