Add support for custom loggers (controlled via `logger` setting)

**CustomLogger** extension allows you to define your own logger instance using `logger` setting.
That logger then will be available as #logger helper method in your routes and views.

### Classic Application

To define your custom logger instance in a classic application:

```ruby
require 'sinatra'
require 'sinatra/custom_logger'
require 'logger'

set :logger, Logger.new(STDOUT)

get '/' do
  logger.info 'Some message' # STDOUT logger is used
  # Other code...
end
```

### Modular Application

The same for modular application:

```ruby
require 'sinatra/base'
require 'sinatra/custom_logger'
require 'logger'

class MyApp < Sinatra::Base
  helpers Sinatra::CustomLogger

  configure :development, :production do
    logger = Logger.new(File.open("#{root}/log/#{environment}.log", 'a'))
    logger.level = Logger::DEBUG if development?
    set :logger, logger
  end

  get '/' do
    logger.info 'Some message' # File-based logger is used
    # Other code...
  end
end
```