New param type Custom

Custom may be used for types that are not supported by HaveAPI
directly. It may be arrays, nested hashed and so on. However, it's
use in action input/output parameters is discouraged. It was
created for metadata side-channel primarily.
Action.meta: fix return value
Call ModelAdapter.used_by for every action that uses the adapter

Adapters use this method to add additional metadata parameters.
Action.validate: fix metadata validation
New hook system
Hooks: call_hooks_for calls both instance and class hooks
Hooks: first parameter to called blocked and return value

Invoked blocks gets previous block's return value as first
parameter. The last block's return value goes to the caller.
Extensions, ActionException extension