[WIP] Support for filtering status on different criteria.

- From spec: https://docs.google.com/a/canonical.com/document/d/1olIjfnMIKPbNMmNBhfjwlnzdRvY-xBKygpIOhv7QIkE/edit#heading=h.tdsd6gcvc55e
Merge, refactoring, additional filters, tests.

- Merge branch 'master' into status-filtering.
- Filters moved into their own file.
- Now filtering machines as first-class objects.
- Filters broken down into atomic operations for re-usability.
- Meat of tests is now present.
Merge remote-tracking branch 'refs/remotes/origin/master' into status-filtering
Holistic unit-chain matching.

- Situations in which the entire chain of units and their subordinates do not match are now handled correctly.
roughly break up test files; extract context.Factory
add a bunch of failing tests
add basic tests for Factory; move non-Factory NewHookContext func into export_test (to keep existing tests passing, but prevent other people from creating contexts in unhelpful ways
remove persistent relation context from Relationer
Switching local updates to default of true.

We don't want local installs of Juju to become outdated, so unless the user has specified otherwise, we will default this value to true.
Refactor peergrouper tests to avoid cycle imports

The tests for peergrouper, being part of peergrouper package
would trigger an import cycle if anything under apiserver
imports peergrouper.
The tests where refactored to use the export_test pattern
so all tests are under peergrouper_test package
Added functionality for stubbing embedded machines.
Merge remote-tracking branch 'refs/remotes/origin/master' into status-filtering
Go formatted
address review
drop proxy rubbish
Merge branch 'uniter-context-factory' into uniter-context-factory-2
Fix style-guide links

Changed links to absolute, was improperly linking to /doc/contributions/doc/contributiuons/style-guide.md
Increment juju to 1.21-alpha3
Mostly working set. Services are not being filtered.
provider/ec2: verify credentials early in bootstrap

Verify credentials early in the bootstrap process by
issuing a query to EC2 and checking the status code
on the response. Provide a user-friendly error message,
and log the underlying error at debug level.

Partially fixes https://bugs.launchpad.net/juju-core/+bug/1362072