tests:  adding test framework for unit style testing

utilizes pep8 for style of *.py
utilizes ansible in local test mode for testing plays
Massive refactor of Ursula

This change is a massive refactor of Ursula. There are effectively no
logic changes, just a reworking of existing code.  Here are the changes
encompasssed:
- remove host group roles (ie. db, network, compute, controller). All
roles should be reflective of the resources they provide; not the host
group that they serve. Having host group roles leaves us with code that
is not composable when we decide to break services out into other groups.
(note: most of the other changes are due to this modification; hence the
massive size of this change)
- move all service installation (ie. /etc/init/nova-compute) to the role
providing the service.  This is no longer part of the "compute" or
"controller" roles.  This is facilitated by a new library:
upstart_service.
- break roles into control and data plane roles. By doing so we can
direct a playbook run at a particular plane. This is especially useful
for new node additions.
- have control and data plane roles become dependent on any common roles
(ie. nova-data and nova-control are both dependent on nova-common). This
helps keep our code DRY.
- Similarly, because services are installed and started earlier than
they had been, have each openstack role manage its own database
creation. This is now an additional dependent role.
- Add tags to each of the sections within site.yml. Again, this helps us
target specific planes, sections, services, etc.
- Move haproxy to its own common role that is flagged by a parameterized
role. We had duplicate code here and it made a lot of sense to squash
this.
- Fix up Vagrant for testing.

!version-major
neutron: ensure sudo access is configured before starting services
neutron: install plugin config in common role and move linuxbridge-agent to data role
Fix Heat brokenness in refactor

Heat should not be on by default, and the proper argument for
upstart_service is cmd; not command.
tls: crt in local folder, auto trusted

Add the OpenStack services crt and the rsyslog logging cert into the
local directory to be picked up.
Any .crt files in /usr/local/share/ca-certificates are automatically
trusted by update-ca-certificates when run.

Based on man page found at:
http://manpages.ubuntu.com/manpages/precise/man8/update-ca-certificates.8.html
fix: add missing openvswitch template
Remove neutron lbaas from the offering

Neutron LBaaS was integrated with the hope of being able to use it in
a production capacity. Those dreams were not to be. We have moved on to
building out Octavia and that will be our LBaaS of choice. No sense in
keeping this logic around.
Update upstart_service to support start/stop on

It used to be that the upstart_service was being picky about start_on
and stop_on. Make this simpler as some of the neutron services need
explicit ordering. Also support pidfiles.

Reorder site.yml neutron data plane roles.
neutron-control: do not include openvswitch plugin config when using ml2
Remove extra comma and use set_fact idiom

The last commit had an errant comma which led to an incorrect
upstart config. Remove the extra comma and use set_fact instead.
attempt to addres xorp failures in CI

For some reason xorp is failing CI, while working locally. Set xorp
service state to restarted and add a sleep of 10 as this service
seems to start slowly sometimes.
Add a timestamp callback plugin

This adds a timestamp callback so that we can profile which plays
are consuming the most time.
Install openstack clients first

It looks like some of the services are getting into weird states
because they are running with (potentially) a different client (ie.
novaclient, glanceclient, etc) than what is installed a bit later.
So, install the clients first.
dont restart xorp every run

change the restart of xorp to happen in an handler, and move the
enablement to its own task.
Add a timestamp callback plugin

This adds a timestamp callback so that we can profile which plays
are consuming the most time.
Move xorp to use 'primary_interface'

xorp should adhere to the standard we have set which is to use
primary_interface when referencing (unsurprisingly) your primary
interface.
Merge pull request #538 from craigtracey/timestamp-callback

Add a timestamp callback plugin
Merge pull request #527 from paulczar/feature/tests

tests:  adding test framework for unit style testing
Merge pull request #530 from blueboxgroup/refactor

Massive refactor of Ursula