Naive cocoapods caching implementation

- This is a straight copy of the ruby bundler code
- It also allows caching bundler in obj-c projects if you want
- cocoapods doesn't support --deployment for obvious reasons

I think long term it makes sense to modularize the caching code but I
couldn't come up with a decent abstraction trivially and I really miss
the caching having moved to an ios project from ruby
refactor out common bundler logic
add a cocoapods DEFAULT_CACHE key/value
fix a failing data spec
remove an extra call to super
name the fold, luke
cocoapods: don't run `pod install` if Podfile.lock hasn't changed

This required some refactoring of the `if` command to allow for "raw
conditionals" (i.e. conditionals that don't use [[ ]]), since we want to
check the return code of `cmp`.
cocoapods: allow for a custom podfile location

Libraries commonly have their Podfile in a subdirectory containing a
"test project"/"example project".
context, not if
stub actool in the specs
use the run matcher, not the install matcher
add the bundle install args for completeness
make sure we encode the key in our specs
Fix namescaping in Metriks middleware
Fix 'pod install' folding
Move iOS simulator starting into a fold