Add authentication module

This PR adds support for an authenticated signing endpoint and a default HMAC authentication provider. This extends the work originally done by @grittygrease.
Wrap json error.