Begin test class for AndroidDistribution

Beginning of defining test sdk and test exes. Tests go green at this
point.
Make sdk_path be a kwarg instead of an arg

This will make test classes easier to implement
Update tests to attend to some implementation bugs

I am still learning how this distribution @contextmanager works.

Neat, though.
Merge branch 'distribution-pr' into distribution

Conflicts:
	src/python/pants/backend/android/distribution/android_distribution.py
Working on AndroidDist. test class. WIP

SHould probably be stashing this instead of committing, but it
will all end up squashed sometime soon.
Added a working SDK @contextmanager

Although we have some unneeded stuff, so far we have no need of
the self.exe() method.
Have default distribution in the context manager

This makes more sense than manually setting up versions each test.
If we want to change to blank we can just pass None.
Interim fix for cyclic dependency
Test class for AndroidDistribution

Still some methods left to verify, and I think I will put in a
LiveDistribution test, just to see.
Finish unit tests for AndroidDistribution

Some of these are possibly overkill, and I am not sure that the
AssertionError tests are even very valuable.

But I guess I can hear about it in CR. Tests are working enough for that.
Initial work on android_distribution task
Fix error from style refactor

When I refactored to conform to the two space indent style, I made
an error and half of the methods in this class ended up belonging to
Error. Fixed.
Move AndroidDistribution into the Android backend

As john says, we should keep the android stuff in one backend if at all
possible and if we need to have dependancies outside of it, let pip
handle it.
WIP: adding specific SDK/Build tool versions to AndroidDistribution

Not working yet, but the skeleton is moving along. Changing things
often, so I want a reference point to look back at.
AndroidDist.: Change _validated tools and target sdk to sets

Still very much a WIP as I puzzle all this out.
More progress on the WIP AndroidDistribution

This is caching and retrieving sdks. But the cache lookup
is not ideal and the locate_build_tools and locate_sdks are
stub methods yet.
Caching and checking of sdk and build tools working

The dictionary lookup is flawed. It is checking a tuple, but
we actually don't care about structure. Some sort of looking
into the sets that are _validated_sdks and _validated_build_tools
is way way better.

Needs test coverage Y(*.*)Y  (that ascii means I am in trouble
and may run)
AndroidDist: Caching is working as is validating build_tools

Removed class attributes that were non-concrete. Changed the validate
pipeline to just check for installed sdks and build tools, not set
global attributes.
Change validated_binaries to a set

I didn't see any reason to have a key/value for verified tools. Set
has fast look up and will resist dups.
AndroidDist: change __repr__ to print the sets() as lists()

A lot easier to read, and it won't matter that the output is slightly
misleading since there are no instance methods meant to be used
by the user.

Still may be asked to change it, we'll see. I would understand.