Dry up options and headers logic, allow headers to be passed to OPTIONS requests

- fixes quite a few edge cases surrounding middleware not being run
Merge pull request #498 from karlfreeman/fix-options-headers

Fix options headers
Skip entity auto-detection when explicitely passed.
Ensure Travis runs tests and Rubocop

Not sure if this was intended but the I've just noticed that Travis reports 'green' test suites even though no tests are being run?
Merge pull request #504 from karlfreeman/patch-1

Ensure Travis runs tests and Rubocop
Test and docs for params precedence
Run Rubocop as part of default tasks.
Merge pull request #506 from myitcv/params_precedence_readme

Test and docs for params precedence
Allow parameters, such as content encoding, in content_type.

For example, if we define :json content type as "application/json; charset=utf-8"
and client do payload(POST/PUT) request with "application/json" type then response should be successful.

Ignore content type params in mime_types method.
Merge pull request #508 from dm1try/content_type_with_params

Allow parameters, such as content encoding, in content_type.
Prettified CHANGELOG.
Update CHANGELOG.md
Documented route_param.
Support lambda-based default values for params
Merge pull request #510 from myitcv/lambda_based_default_params

Support lambda-based default values for params
Add required option for oauth2 middleware.

This addresses situations where authentication is optional. sometimes you don't want to deny unauthenticated access but allow authentication when a token is actually provided. in this case the token must still be valid if it's provided, but if it's not there then the endpoint will still attempt to handle the request instead of returning a 401.
Fix: rbx-19mode => rbx, see https://github.com/travis-ci/travis-ci/issues/1641.
Fix: Rbx build, related to https://github.com/travis-ci/travis-ci/issues/1641.
Remove Rbx build, see https://github.com/intridea/grape/issues/514.
Don't create Grape::Request multiple times.