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.