New parameter type Resource, stricter i/o filtering

Resource parameter represents one-to-many associations. It replaces
rather primitive foreign keys.

In input, resource specifies its choices by providing URL to action
that returns a list of objects, which can be used.

In output, resource returns its ID and label. These two attributes
have configurable names (value_id, value_label).

Authorization of input and output is now more strict. Allowed are only
defined parameters (input, output blocks), everything else is dropped.

This makes index/show actions easier, as you can return everything
and let the filters do the job for you.
Action description: return 403 if action user is not authorized
Action description: add concrete links to resources, Action#prepare

When an action is asked a description with correct URL parameters
(would return an existing object), it returns description specific
to given object. Links to referenced resources are concrete, e.g.:

    "value": {
        "url": "/v1/nodes/1",
        "method": "GET",
        "help": "/v1/nodes/1?method=GET"
    }

As HaveAPI does not now how to resolve parametrized link itself,
it must be help. URL parameters for the description of referenced
resource may be specified like:

    resource MyAPI::Node, value_params: ->{ @vps.node_id  }

Similarily, there is parameter choices_params, which is used
for resolving URL of an action that returns a list of choices
for this resource.

The lambda function has to return one parameter or an array.
It is executed in the context of action instance.
For this purpose, a new method for preloading objects has been
introduced.

    class Show < HaveAPI::Actions::Default::Show
      ...

      def prepare
        @vps = Vps.find(params[:vps_id])
      end

      def exec
        all_attrs(@vps)
      end
    end

In case of action description, only method #prepare is called, #exec
is ignored. When invoking action for real, #prepare is called before

currently primarily for the lambda functions.
Action description: return concrete links to resources only for objects, not for lists
Action#resourcify: translate value_id and value_label to db_name

This ensures that parameter names used for API I/O have
different names in database (compatibility reasons).

When referencing a resource, it must have implemented action show,
as its output param list is used for the translation.
Authentication providers

Define an interface for creating authentication providers, that are
self-described. Client can choose what method it understands
and/or wants to use.

HTTP basic and token auth are built-in. They need to be subclassed
and the developer must implement methods to find user, tokens, etc.
Token auth: provider instance per API version
Token auth: handle token validity
Pass current request as an argument to Action
Token auth: add request argument to #save_token
Action description: action instance in a context, one for all resource parameters

The return value of Action#prepare (nil or not nil) determines
if the resource has assigned a value or not. If there is no value,
resource parameter description does not contain a link to associated
resource, only null.
Action input/output: implement inheritance

Subclasses inherit I/O params from parent. All actions have defined
I/O, even if empty.
Paginable, includable module adding paging params to action input

Adds parameters limit (max number of entries returned) and offset
(offset of first returned object).
Parameters::Resource#clean: accept nil
Input params: do not add params to input that were not sent
Change license to MIT
gemspec: fix license