Allow access to header and payload without signature verification

This PR includes a few related changes:

1. Some refactoring, mostly 'extract method' that is designed to shrink the size and responsibility of individual methods.
2. Using these more granular methods, allow access to the header and payload of the token to address https://github.com/progrium/ruby-jwt/issues/26 
3. Pull the JSON encode/decode into a dedicated module, as a precursor to making MultiJson optional for Ruby 1.9+.  MultiJson has been EOL'd, so it's desirable to extract this dependency.