fixes #832 - adds parameterized class support

Credits:
This patch is based on the original work of Olivier Favre
<olivier@yakaz.com> many many thanks!

This patch adds the following features
* import class parameters, and try to understand their types
* support a complex matrix of environments, puppet classes and their
signature - each class can have a different set of parameters per environment.
* adds an ignore yaml file 'config/ignored_environments.yml.sample' file were
users can add regexp or class names that the importer should ignore.
common usage case for this is classes such as ::config, ::install etc.
* introduce a new type of smart variable - parameterized.
* adds complex data types to smart vars, arrays, hashes, json, yaml etc are all supported now.

in order to use the new ENC format for puppet 2.6.5+ you should enable the
*Parametrized_Classes_in_ENC* and *Enable_Smart_Variables_in_ENC* within Foreman Settings

This is the initial patch just to get param classes support in, follow-up patches
would include a better UI and the relevant UI updates to host edit page etc.

Signed-off-by: Ohad Levy <ohadlevy@gmail.com>
refs #832 - making sure that ENC values cast - skipped this patch somehow
fixes #1878 - Double quote in the wrong place included invalid kernel boot option
users api v1
* fix user documentation
* remove password_confirmation from user api
* Add json template for users#create
refs #832 do not force smartvars order saved if they are the default or not sent over the wire.
adds BMC proxy feature.

This patch simply allows foreman to save a proxy with BMC feature.

without this, Foreman will error out and the proxy won't be usable at all.
Compute Resources should use the friendly name (e.g. oVirt vs Ovirt)
allow to serve apidoc in production
Use tokens for discovery of host identity during installation

- fixes #1069
- fixes #1720
- refs #969
Upgrade rails core to 3.0.17 fix a bug where single quotes aren't escaped (CVE-2012-3464)
update api documentation

* remove #set_resource_params from Api::BaseController to leave :id param under :id for apipie validations to work
* fix custom apipie validators to return nice errors
* enable apipie validations for bugs to be caught early
* log apipie param errors with info level
* add missing documentation, :search, :order and params from url (:id)
* add missing :allow_nil options in api documentation
foreman-config - CLI tool for setting Foreman configuration

Script for listing all settings and getting or setting a value for a key.

See `foreman-config -h` for details.

The main use-case for this script is in configuration time (e.g. in Puppet
manifest setting Foreman). It uses the model layer (instead of Rest API)
because some settings (such as oauth) need to be set up before API is possible
to use in some scenarios.

Loading Rails environment is quite an expensive operation. This change allows
to set more values with one command e.g.:

    script/foreman-config -k oauth_active -v true\
                          -k oauth_consumer_key -v key\
                          -k oauth_consumer_secret -v secret
fixes #1892 - auto generate provisioning tokens based on build state
refs #1892 - make sure hosts objects are not READONLY

(rails by default when using scope with joins set the records to readonly)
Add a script to test migrations

Some minor changes to multi-op

Fixed some issues with upgrade logic
fix for #1893
fixed pg db:migration bug that failed on create table media
shortened fixture name so tests pass on postgresql which doesn't truncate extra string characters
refs #1892 - ensure that when unattended / orchestation is disabled this code does not executed.
fixes #1852 - NoVNC Connection timeout with Firefox 15