command: improve error handling of decoding request body as json
command: improve error handling of decoding request body as json

This patch splits the decoding of the HTTP request body out to a
separate function, decode_body, on WebDriverMessage.  This is in
line with get_session_id, and reduces somewhat the complexity of
WebDriverMessage::from_http.

It also handles rustc_serialize::json::ParserErrors individually, by
making SyntaxError discernable from IoError.

The SyntaxError error handler re-uses the stacktrace produced by the
JSON parser when failing to decode the HTTP request body as JSON.
This improves the readability of the returned error.

AutomatedTester/webdriver-rust