Introduce back-off delay mode for 4100-4199 errors.

Used this as an opportunity to refactor the reconnection parameters - 
faced with adding some kind of "back off" flag, coupled with the fact
that you still had to pass a reconnect delay when you weren't going to
reconnect, using an enum to describe the reconnection "mode" seemed
much nicer.

The back-off mode is linear, we just multiply the configured delay by
the number of the attempt, which should more than suffice.