Only overwrite pass_block if there's a value

This prevents pass_block from being overwritten with nil which happens when the superclass has (non-matching) routes.

This bites in development as Sinatra::Base registers "get '/__sinatra__/:image.png'" only in development mode, so everything works fine in production but not in development.
Improved self-hosted server.

- Will now stop the self-hosted server _and exit_ the program on INT and TERM signals.
- No more multiple Sinatra messages on multiple signals.
- Stopping/quitting a server possible using .quit! and without the need of the actual server and handler_name.
Simplify and Improve readability on some conditions
Merge pull request #1 from scudelletti/self-hosted_server

Simplify and Improve readability on some conditions
Fixes accept? to match wildcards in HTTP_ACCEPT.
Test for explitily setting layout true

See #727

If the default options for a template include :layout => false, it
should be possible to override this in the explicit options to the
rendering method.

e.g.

    set :slim, :layout => false

    get '/' do
      slim :index, :layout => true # should render with layout
    end
Allow overriding :layout => false with true

Fixes #727

The :layout option for templates controls both which template should be
used as the layout and whether a layout should be used at all.

If the default options for an engine include :layout => false, then
passing in :layout => true in the call to the render method shouldn't
use false as the value of :layout, it should fall back to
@default_layout (the "default default").
Fix some warnings
Fix param ambiguity
Merge pull request #734 from vipulnsward/ambiguous

Fix param ambiguity
Further refactored the self-hosted server behaviour.
update russian README on subdomains session sharing

(translated last update to main README file)
Merge pull request #738 from edg3r/master

update russian README on subdomains session sharing
suppress unused variable warning
Merge pull request #742 from vipulnsward/1warn_1

suppress unused variable warning
drop `entries` variable and use `map!` instead of `map` on new array to save new object creation
use `map!` instead of `map` on new array to save new object creation

also change "1.0" (string) to `1.0`(float) since we save conversion from `to_f` applied on it
Extract `DROP_BODY_RESPONSES` to a constant
avoid creating an array an then doing a join by use of string interpolation
extract `ETAG_KINDS` to a constant

also use string interpolation instead of  addition