Add support for Ubuntu Trusty in Vagrantfile

Allow an Ubuntu distribution to be specified in the Vagrantfile.

When Trusty is specified, use the official Puppetlabs Vagrant box for
Ubuntu Trusty, pulled down from Vagrant Cloud:

https://vagrantcloud.com/puppetlabs/boxes/ubuntu-14.04-64-puppet
Use official Ubuntu nodejs package under Trusty

Under Ubuntu Precise, we use a custom package from our Launchpad PPA for
nodejs, which provides nodejs version 0.10.32-1chl1~precise1.

Ubuntu Trusty provides a similar version from its official sources,
version 0.10.25~dfsg2-2ubuntu1:
http://packages.ubuntu.com/trusty/nodejs

I've checked with @alexmuller from Performance Platform and they are not
reliant on a specific version of nodejs. Should this cause any issues,
we can always tag specific CI slaves so that their Jenkins jobs run on
the appropriate version.

Because `nodejs` is the only package supplied by our Launchpad PPA for
our CI machines, we also add a conditional so that the PPA is only
sourced for Ubuntu Precise. Under Ubuntu Trusty, we do not use any
package from that PPA.
Support for Ubuntu versions other than Precise

...in the bootstrap script.

Specifically, I'm making this change to add support for Ubuntu Trusty.
Upgrade ghtools to version 0.22.0

Upgrade ghtools to a version that supports Ubuntu Trusty. See this PR:
https://github.com/alphagov/ghtools/pull/9

This prevents a conflict on Ubuntu Trusty between system Python
libraries and Pip libraries.

Specifically, Pip relies on the `IncompleteRead` module that is exported
by `requests.compat`. Version 2.4.3 of the `requests` library removed
that exported module[1].

When `ghtools` is installed, Pip would upgrade `requests` to version
2.4.3 (the latest available), thereby causing Pip to break because the
`requests` module installed by Pip (in
`/usr/lib/python2.7/dist-packages/`) takes precendence over the system
version of that module.

This was causing the following Puppet error on our ci-slave-4 box in Vagrant
using Ubuntu Trusty:

    ==> ci-slave-4: Error: Could not prefetch package provider 'pip': [nil, nil, [(provider=pip)], nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]

When I tried to run `pip` on the Vagrant box, I got the following error:

    vagrant@ci-slave-4:~$ pip
    Traceback (most recent call last):
      File "/usr/bin/pip", line 9, in <module>
        load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
      File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 351, in load_entry_point
        return get_distribution(dist).load_entry_point(group, name)
      File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2363, in load_entry_point
        return ep.load()
      File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2088, in load
        entry = __import__(self.module_name, globals(),globals(), ['__name__'])
      File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 11, in <module>
        from pip.vcs import git, mercurial, subversion, bazaar  # noqa
      File "/usr/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
        from pip.download import path_to_url
      File "/usr/lib/python2.7/dist-packages/pip/download.py", line 25, in <module>
        from requests.compat import IncompleteRead
    ImportError: cannot import name IncompleteRead
    vagrant@ci-slave-4:~$

By installing requiring the exact same version of `requests` as the one
provided by the system under Ubuntu Trusty, Pip no longer needs to
install the `requests` module and `ghtools` will use the system module.
This is also tested under Precise and does not break Pip.
Merge pull request #245 from alphagov/82935274-support_trusty

[#82935274] Add support for Ubuntu Trusty