Variable Length ID Support

See Issue #36

Manually merged changes I had with old internal copy of camus since the layout of the project had changed significantly.  This allows id or a variable length byte array to be used as the identifier, which is then treated as
a hex string internal to the system.

The encoder reads directly from the config passed in its constructor for the value of id.variable.length which defaults to false for backwards compatibility.  If found and true, will allow variable length strings to be used as the id instead of an integer.