Avoid relying on undefined behavior in assert.ObjectsAreEqual().

The previous assert.ObjectsAreEqual() implementation is broken in go 1.4beta1:

   x := uint64(3)
   log.Printf("equal? %t", assert.ObjectsAreEqual(3, x))

This prints "true" under Go 1.3 and "false" under 1.4beta1 (amd64/darwin).

The reason is that the ObjectsAreEqual() was comparing two reflect.Value values
for equality using ==, but the behavior of that operation is apparently
undefined (https://code.google.com/p/go/issues/detail?id=9034). The fix is to do
the type conversion and then do the comparison between two interface{} values.
Fix #99: Contains doesn't work for complex types
Merge pull request #100 from victorkryukov/issue-99-contains-complex-types

Fix #99: Contains doesn't work for complex types
Merge pull request #94 from neilconway/object-equality-golang-1.4

Avoid relying on undefined behavior in assert.ObjectsAreEqual().