When fetching, treat anything that's not a tag as a generic RemoteReference -- don't sniff for branch specifically.

Otherwise it's impossible to fetch certain kinds of non-standard remote refs, like github's special pull request refs.
Give Popen a silly buffer size, or you only get the first 2^16 bytes

Without this, some commands with large output fail horrible. For example, fetching remotes that have a large ref list: it fetches fine, but then the parsing for FetchInfo dies because the (trimmed) stderr list isn't as long as the list from FETCH_HEAD.

I couldn't find a generic way to make this unbounded (temporary files, for example) without rewriting *everywhere* that stdout/stderr is read. Which is...a lot of places.
Merge branch 'fix/fetch-any-ref' into 0.3
Merge branch 'fix/popen-buffer' into 0.3