work around noisy 'conflicting chdir during another chdir block' warnings

If the popen method is used with the :chdir option within a Dir.chdir
block on ruby 1.9 (fex inside a in_build_dir block), a warning is issued that is needless distraction here
since we're about to exec anyway.

See the implementation of Dir.chdir
http://www.ruby-doc.org/core-1.9.3/Dir.html#method-c-chdir
Add GitRepo#owner, for easier stubbing.
Set the GitFS owner's git name and email if they're not set already.

Git requires these to be set in order to commit, and they're often not set on a fresh system.
Merge branch 'git-fs-initing'
Revert "Add GitRepo#owner, for easier stubbing."

This reverts commit 074292e0c451db7676346cd647198b43c382adc4.
Set git details using the root path's owner.

At this point the repo doesn't exist so we can't query its root's owner.
Clean up dep snapshot specs: assume the repo exists.

The create/init/commit/run/commit logic is tested in the GitFS specs. The point of the dep snapshotting specs is to ensure snapshots are taken only when deps are successfully met, and only when snapshotting is enabled.
Merge branch 'git-fs-initing'
Print explicitly to stdout in Object#tapp, for objects that define their own #puts.
Trash previous builds before running new ones, to avoid strange state.

I actually hit this: I CTRL-Ced a babushka run that was halfway through configuring a ruby build, and when I re-ran it, the resulting ruby was missing psych and zlib support. It seems previous build state can confuse some packages' build scripts.
Access the standard streams consistently.
Check STDOUT for tty-ness instead of STDIN when it's for output.
v0.17.6 - gitfs, sudo, encoding handling, homebrew taps, and more.

- The experimental --git-fs option has seen a lot of changes. It commits a base snapshot before making any changes, handles systems with no git name or user set, and can run as any user provided that sudo is configured correctly (this is achieved via a GitRepo change that runs destructive repo commands as the repo's owner).

- BrewHelper can install and query homebrew taps now, thanks to ecin. (The code in BrewHelper makes too many assumptions about homebrew's internals, though; a refactor to instead use `brew info` is planned).

- Handling of externally originating strings has been improved thanks to a bug report from Schnittchen. Strings in unknown or invalid encodings will be coerced into UTF-8 so babushka can operate on them without hitting invalid characters. This shouldn't cause any corruption except on strings whose encoding is invalid, where inknown chars will be replaced with '?'.

- The #sudo helper has been much improved. It can assemble and escape correct shell commands properly now, which means sudo commands no longer have to be passed as a string; it will accept splatted commands just like #shell can, e.g.

    sudo('systemctl', 'start', service_name, :as => 'root')

- Fancypath#puts was added, which functions just like IO#puts: it appends its input to the file and terminates with a newline.

- Standard stream accessing was cleaned up to always use the constants (STDIN, etc) instead of the global vars ($stdin, etc), and to check the correct stream: for keyboard input and traps, STDIN; for colour detection, etc, STDOUT.

- The spec suite no longer includes the 'Babushka' module at the top level, which makes it mirror real usage more. Previously, it was possible for a namespacing problem to exist without the spec suite seeing it, since the Babushka module was always in scope when the test suite ran.
Remove unused start_at arg from String#colorize!.
Merge remote-tracking branch 'bearded/colourise-bang-fix'
Fixed Travis rbx check
Make the rbx-specific gems available in all groups, not just test.
No need for gemfile version constraints; the lockfile's got 'em.
Ignore rbx's bin/irb.
Merge branch 'rbx'