Competing

i am dropping this as a PR now there are still some small things to do. However the following is here:

1) checkpointing
2) server restart
3) RR vs prefer one
4) various settings
5) multiple clients etc
6) config management client api/http
7) statistics http
8) updating on the fly config (causes a subscription drop)
9) cluster node switches
10) parked messages/timed retries (note in flight messages will get retried no matter what on server take over)
11) security model for subscriptions
12) configurable checkpointing strategy

Some things still outstanding

1) I want to combine streambuffer into subscription (state handling is weird between them now)
2) I want to use an actual state machine in the handling (might make it clearer whats happening) this is less important
3) a few missing tests (on replaying parked messages and on falling back to paging)
4) HTTP api for getting messages (supported in backend just not http)
5) autoreconnect for client (discussed to leave for after and do reg as well)

//there are some warnings on build in mono (not many) but with -wall you will get errors IIRC they are in the tests.

Most the other stuff is good though I am mostly putting this here as a point for review and will keep looking at those 5 things.