Upgrade Torquebox and JRuby

For best practices, performance, and security compliance, it's helpful to use
the latest versions of libraries. This commit updates Torquebox to 3.1.1 and
JRuby to 1.7.13 as a consequence. The previous version of Torquebox shipped
with JRuby 1.7.8, so this updates these libraries in sync.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-339
Fixing Debian's i386 installation task

The task for Debian was incorrectly handling i386 infrastructure, never
actually booting but rather always failing. This rectifies that mistake.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-325
Fixing Ubuntu's preseed URL mutation

The preseed's URL was not working in cases where the domain did not contain a
period. That happened due to a "feature" where the preseed/url kernel
argument would be augmented by the get_domain parameter of the node. For
example, if the policy's hostname pattern was "node${id}.example.com", the
preseed URL would be mutated from
"http://razor-server:8080/svc/file/preseed" to
"http://razor-server.example.com:8080/svc/file/preseed". This method grabs
the preseed file first, then passes it using preseed/file instead of
preseed/url.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-326
Fixing Debian's preseed URL mutation

The preseed's URL was not working in cases where the domain did not contain a
period. That happened due to a "feature" where the preseed/url kernel
argument would be augmented by the get_domain parameter of the node. For
example, if the policy's hostname pattern was "node${id}.example.com", the
preseed URL would be mutated from "http://razor-server:8080/svc/file/preseed"
to "http://razor-server.example.com:8080/svc/file/preseed". This method grabs
the preseed file first, then passes it using preseed/file instead of
preseed/url.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-325
Ubuntu 10.04 + 14.04 task support

Fixes https://tickets.puppetlabs.com/browse/RAZOR-326
Non-functional change: Add commented-out nomodeset argument

Including the `nomodeset` into the Ubuntu and Debian tasks is an obscure
setting. This includes that option commented out. About `nomodeset`, from
http://ubuntuforums.org/showthread.php?t=1613132:

The newest kernels have moved the video mode setting into the kernel. So all
the programming of the hardware specific clock rates and registers on the video
card happen in the kernel rather than in the X driver when the X server
starts.. This makes it possible to have high resolution nice looking splash
(boot) screens and flicker free transitions from boot splash to login screen.
Unfortunately, on some cards this doesnt work properly and you end up with a
black screen. Adding the nomodeset parameter instructs the kernel to not load
video drivers and use BIOS modes instead until X is loaded.
Allow powershell (& other arbitrary) install files inside a broker type

Windows machines, being unable to run Bash files, will need an alternative
file format for each broker. In order for a broker to receive a different
install file, its task needs to call
`/svc/broker/${id}/install?script=${file}`, where `$id` is the node id and
$file is the file that should be returned. For powershell, `$file` will equal
`install.ps1` or `install.ps1.erb` and the file in the `.task` folder will be
`install.ps1.erb`. Calling this without the `script` argument is equivalent
to calling it with `script=install` for `install.erb`, meaning this is a
backwards-compatible change.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-355
(RAZOR-362) Remove saucy from build defaults

This commit removes saucy from build_defaults. It went EOL on July 17,
2014
Fix Trusty's preseed file's url to squashfs

The previous squashfs file was pointing to a local file path on the razor
server, rather than a URL to that file.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-365
Remove `all` from `update-node-metadata`

The `all` parameter was previously not functional. It was not mentioned in
the API.md document. It was declared as a valid boolean parameter, but had no
effect on the execution of the command. This removes that superfluous
parameter.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-364
Ubuntu Precise task encounters error

On Ubuntu Precise, the error: "mirror does not support the specified release"
occurs. Turns out this is due to a change to how the preseed file is fetched.
Trusty works fine with the current config, so this will change Lucid and
Precise back to the last working version.

This commit follows the decision that the base task should be kept most
up-to-date, meaning that `ubuntu.task` should currently mimic Trusty.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-366
Update README.md

fixing semver link
Use `help` instead of `to_s` to represent the schema's help text

The previous method for storing help was in the object's default serialized
representation. Much more appropriate, used here, is a different method
called `help`.

For https://tickets.puppetlabs.com/browse/RAZOR-272
Add CLI example capability

In order to support examples that are customized for the command line client
interface, we need to build out a more robust format for the help texts
stored on the server. The help for each command now includes several pieces:
- "full" is still present to support older clients
- "summary"/"description"/"returns"/"examples"/"schema" added for each
component
- "examples" is a nested object: "api" and/or "cli" can be present

Clients (namely the CLI) should display these attributes if present in the
help text's JSON.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-272
Translate API help examples into CLI help examples

The help examples that currently exist are only for direct API calls, or for
sending a JSON file for a command. This change translates the existing
examples into a CLI format, which will be available alongside the existing
API examples.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-272
Use brokers in Windows installs

In order to have operational Powershell brokers in Windows, proper hooks need
to be in place to download and execute the file right before the user is
able to log into the system. This commit achieves that by having
the Windows installer download the file from the server and register a
service to run the file on boot.

Included in this commit are translations of the no-op broker and the PE
broker. The latter requires a valid URL to the puppet agent MSI, which is
either derived from the `version` parameter, or supplied directly by the
broker's config.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-59
Properly handle DOS line endings for WIndows files (no functional change)

Tell git that *.ps1 files are Windows files and should be treated as such.
build-winpe: allow passing in where image and scratch files should be put
build-winpe: adapt to ADK 8.1

Based on https://github.com/nanliu/razor-server/tree/win2012
build-winpe: pass the Razor server URL in at build time

Since there is no way to set the URL of hte Razor server at boot time, we
pass it in at build time as a command line argument to the
build-razor-winpe script