Expose FSM timeouts via the HTTP API

adding the header 'X-Riak-Timeout=<some_int_in_ms>' will now cause the request to return a timeout error if it takes longer than the specified time interval.  This works for DELETEs, PUTs, and GETs, but in the case of a PUT or a get, a timeout failure does not guarantee anything about the state of the cluster when it happens.  The PUT or DELETE may or may not have succeeded; the correct course of action after the timeout is to retry the same action until a 200 is received.