Make Project < Hashie::Mash
Allow Issue#key to pass-thru

Also begin thinking about how to implement human-readable field names
for Issues
Add PUT; think about better exception handling
Big messy transition to JSONResource

This commit introduces the JSONResource class, a subclass of
RestClient::Resource that expects request and response data to contain
JSON data parseable as Ruby hashes.

Lots of spec tests are still failing, but the basic functionality
is working, e.g.:

    $ rake pry[my.jira.host]

    > jira.login('admin', 'password')

    > jira.resource['field'].get
    [ {'id' => 'progress', 'name' => 'Progress', ...}, ... ]

    > jira.resource['issue/bogus'].get
    { 'errorMessages' => ["Issue Does Not Exist"], ...}

    > jira.resource['issue/TST-1'].get
    { 'id' => '10000', 'key' => 'TST-1', ...}

    > jira.logout
    true

    > jira.resource['issue/TST-1'].get
    { 'errorMessages' => ["You do not have the permission to see the
    specified issue.", "Login Required"], ...}
Tidy up, add some specs
Specs and stubs for JSONResource
Use sinatra to fake a Jira instance

The recent shift to JSONResource in Jiraby made spec testing more
difficult (the specific REST calls can't be easily stubbed because
RestClient::Resource instances are created on the fly with the `[]`
operator).

Stubbed JSON data is not the ideal way to test this stuff anyway;
something resembling a real Jira instance may be better in the long run.
This commit uses a MockJira sinatra app. Before running spec tests,
start the app with:

    $ rackup spec/mockapp/config.ru

(This will be automated in Rakefile eventually).