error messages can now be presented

This PR is a proposal (and misses specs & co) to present error messages like started to discuss [here](https://github.com/tim-vandecasteele/grape-swagger/pull/110).
It will be possible to do some thing like this:


```ruby

module  API
  module Entities
    class Error < Grape::Entity
      expose :error, documentation: { type: 'string', required: true }
      expose :code, documentation: { type: 'integer', required: true }
      expose :detail, documentation: { type: 'string', required: true }
      expose :href, documentation: { type: 'url', required: true }
      expose :rel, documentation: { type: 'string', required: true }
      expose :time, documentation: { type: 'datetime', required: true }

      def rel
        'self'
      end

      def href
        options[:env]['api.endpoint'].request.url
      end

      def time
        Time.now.utc
      end
    end
  end
end

error!({ error: 'Not Found',
            detail: "Some more information",
            with: API::Entities::Error
           }, 404)

```

This PR requires the upcomming version of  `grape-entity` .

Not every client can evaluate an HTTP client error. For instance when you have a batch script which uses your API with curl and a pipe then it is easier to evaluate the JSON data and grep the status code from there. Furthor more when your data contains an error code you know it was triggered by your server and not because a network error.

Or think of jsonp (http://www.theguardian.com/info/developer-blog/2012/jul/16/http-status-codes-jsonp). For JSONP you need an error in your data and can't use HTTP error codes.

With the middleware you named how do you ensure that you don't break the contract for your API? HTTP error codes are documented with swagger too.

So in my point of view it is valid to duplicate the HTTP error code, but if you want I can remove it.