Fix issues with enum and binary/unicode test types

### What is the problem / feature ?

The way that `enum` validation worked did not thing that unicode and binary strings were the same.

### How did it get fixed / implemented ?

Changed how the `deep_equal` function worked such that it special cases the equality when both values are of a string type.

### How can someone test / see it ?

Do enum validation on strings.

*Here is a cute animal picture for your troubles...*

![labrador-puppy-with-xmas-present](https://cloud.githubusercontent.com/assets/824194/5477501/280b7476-85e9-11e4-9089-fb4fdb9021ba.jpg)