Implement extra-info GET and PUT API endpoints.

This includes both extra-info and extra-info with key.
Also improve how not found errors are handled by the router and the endpoints.

This is mostly based on Roger's work. I just fixed the failing tests and other minors.
Yeah, we can add any values in JSON format.