Added arguments support. Ice!

Metadata stored JSON-style, but as objects. Used json-cpp -- props to
Baptiste Lepilleur.
All arguments optional. In Python, all of them must have a default
value, i.e. kwargs-only.