Add csrf token handling

This adds csrf token handling based on a modified version of Rack::Protection.
Add a csrf_token_field helper for forms

The token field is automatically generated without user interaction
Use the master version of rack-protection
Port rack/protection#46 temporarily
Revert "Port rack/protection#46 temporarily"

This reverts commit 7c207aa53cfcc9e119dfe355be6f739f72ceb674.
Remove rack-protection from Gemfile
Add minimum rack-protection version
Upgrade to sinatra 1.4.0.d
[routing] Use type from accept_entry directly in 1.4.0
[core] Fix layouts, Sinatra 1.4 interprets a nil layout as a false layout
[core] Fix routing test to use not_found callback
[core] Adds 403 custom test
[core] Fixes issue with handling exceptions in after filter
[cache] Fixes nil issue in memcached store tests
Moved the CSRF authenticity token to be generated on the form_tag helper
instead of form_for (the latter uses form_tag at the end anyway...).
Added tests too.
[core] Revert complicated handling for 404 fixed by Sinatra 1.4.0
Set use_html_safe => true with slim engine, (now real use safebuffer system)
fixed uninstall function in Rakefile to make :fresh/:uninstall tasks run without errors.
fix #1117
Refactored `button_to` to reuse the `form_tag` helper. Moved it to `form_helpers` to have it on the same namespace (it kind of makes sense for it to be in there) and added some tests to it as well.