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.
Just a rename of that put variable. putFunc sounds more readable to me, as the real put magic happens there. Just "put" makes it so insignificant :)