Remove pesky obelisk_codec constructor parameters
Do not pass shared_ptr's by reference

The whole point of this class is to enable ownership semantics.
Passing by reference disables those semantics and misses the whole point.

Plus, non-const references cannot accept anonymous rvalues.
This makes the function harder to call.
Add unit tests for obelisk message encoding
Fix API data widths
Use build_data instead of serializer for obelisk