[REFACTOR] respond_with helper is now extension for sinatra which allows to specify respond_to *formats as Sinatra condition

For example:

    get "/vacancies.?:format?", respond_to: :json, permission: :search do
    ...
    end

renders response for requests with `application/json` ACCEPT header or for requests with `json` format parameter
[HELPERS] Added sha1 helper for calculating SHA1 hash for passed values
[SEARCH] Added QueryBuilder#sha1 method for getting SHA1 fingerprint of generated query
[MODEL] Added Vacancy#sha1 method for getting SHA1 fingerprint of Vacancy instance
[APPLICATION] Added more formats for access_denied response
[APPLICATION][FIX] All search and store endpoints now respond to `json` format only and sets correct content-type for response

NOTE:
API by default responds in json even if `ACCEPT` header or `format` parameter is not defined. For example:

    $ curl -i localhost:9292/

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=utf-8
    Access-Control-Allow-Origin: *
    Cache-Control: public
    ETag: "0e85395"
    X-Content-Type-Options: nosniff
    Content-Length: 58

    {
      "application":"Pickwick API",
      "revision":"0e85395"
    }%

This is not true for accessing API from web browser, because most of them are sending request with `text/html` ACCEPT header.
That's why url `http://localhost:9292/vacancies` returns `Not Acceptable`.
`format` parameter can be specified by adding `.json` in URL `http://localhost:9292/vacancies.json` to get results in `json`.
[SEARCH] Don't search in `industry`, `employment_type` and `experience` except `experience.description`
[PERSISTENCE][FIX] Set Model#fields to hash if nil
[APPLICATION] Added ETags into the response