Get rid of common last_dsl_data

Use separate variable for every class where Dsl module is included
instead.

This also allows reusing the DSL module outside of controller.
Extract DSLs to more modules

Keywords are now separated into this modules:

  * Base - defines `_apipie_dsl_data` and other stuff needed for basic
    DSL functionality

  * Common - common keywords for resource and action description

  * Resource - resource specific keywords

  * Action - action specific keywords

  * Param - this describes the params, it's in separate because it's
    used in Validators as well
Reuse DSL module in HashResource validator
Keep DSL data collecting simple stupid

Postpone further processing of the data to
ResourceDescription/MethodDescription/Validator
Evaluate params data only in MethodDescription

We are going to need information about action in the Param description
soon.
Param groups support

Allow reusing param descriptions with groups by defining them

    def_param_group :user do
      param :user, Hash, :desc => "User info", :required => true do
        param :name, String, :desc => "Username for login", :required => true
        param :pass, String, :desc => "Password for login", :required => true
        param :membership, ["standard","premium"], :desc => "User membership"
      end
    end

and then referencing form the same controller:

    param_group :user
    def create
      # ...
    end

and from different controller

    param_group :user, UsersController
    def create
      # ...
    end
Allow using param groups in hash param definition
Remove unused param: app for MethodDescription

We give the dsl data explicitly.
Update README
Handle scopes of nested param groups
Merge pull request #98 from iNecas/param_groups

param_groups for DRY the documentation