Port latest batch of cukes from master to gh

:warning: This is my work in progress; some cukes still fail

/cc @jingweno
Equality is a bit tricky if there's pointer involved. In this case, both `remoteProject` and `project` are pointers but they're not pointing to the same object so they're not equal. Here's the [spec](http://golang.org/ref/spec#Comparison_operators) for Go's equality. For comparing equality of struct fields, regardless if the struct is referred by a pointer or not, I'd use `reflect.DeepEqual` since it's more consistent. This is [an example](http://play.golang.org/p/6jjyAmjhSN) of how pointer equality works with `==` and `reflect.DeepEqual`. In your `SameAs` function, you could try `reflect.DeepEqual(p, other)`.