Support url changing in a running process, and some modernization

This pull request introduces two new error codes that can be handled by `handle_event/2`. They are `client_error` and `server_error`.

Server error is returned when the server responds 500..505, and client error is returned when the server responds with 400..500.

This pull request also introduces a new return from `handle_event`, which is `{connect_url, NewUrl, State}`. This makes the `gen_lockstep` process connect to the `NewUrl`, making it possible to change URLs without exposing config variables to lockstep and without restarting the server.

Callbacks are now defined using the `callback` syntax.