[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.
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.
Added functionality for stubbing embedded machines.
Merge remote-tracking branch 'refs/remotes/origin/master' into status-filtering
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
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
provider/azure: use new in-memory cert/key API in gwacl

A third-party contribution has just landed in gwacl to
allow users to pass the certificate and key as a []byte,
rather than requiring filenames to be specified. Juju
is updated to use this, removing the need to create
temporary files, simplifying the code.
Add comments about immutability/snapshots
utils/ssh: fix flaky run tests

Timeout should be long if the operation
is not expected to timeout.
extract paths from uniter; minor tweaks to juju-run that will hopefully make it a bit less magically action-at-a-distance
Merge branch 'master' of https://github.com/juju/juju into uniter-context-factory-3
Merge pull request #941 from katco-/lxc-apt-update-to-true

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.
Cache results of checking for ec2 default vpc
Addressed review-points.

- Removed dead code/tests.
- Corrected it's to its in comment.
- Addressed possibility of bad/no public/private IP addresses on a unit when filtering.
- Reordered imports in filtering_test.go.
- Switched some log output to debug rather than info.
- Renamed some variables for disambiguation.
Temporarily disabled tests failing b/c of 1385456.