Add support for randomized mock roots

This commit adds support for using randomized mock build roots instead of the
current static '/var/lib/mock' directory. This enables parallelized builds with
mock. An attempt was made to create this ability within the mock configuration
itself, but actually passing a buildroot into mock is made difficult because
the calling program and mock itself don't share an environment (from which to
set/obtain environment variables). Randomizing the buildroot within the mock
config itself is trivial, but programmatically passing its location back into
the calling program is also difficult. This commit circumvents the issue by
just creating a new mock configuration with the build root defined and setting
up a configuration directory around it. This would be much easier if mock
supported a 'basedir' command line parameter, but it does not currently. The
random mockroot is enabled by default. To disable the randomized mock root,
pass "RANDOM_MOCKROOT=false" as an environment variable to the rake invokation.
The one downside of this functionality is that it's not as fast - it requires
the mock root to be rebuild with every build.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Ensure a lock isn't left behind

Currently we might set a lock and then exit if the circumstances aren't right.
This commit ensures the lock is only set if we pass all checks, and that we
don't potentially leave a lock file behind if we exit early.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>