Two biggest things so far: DeepEqual calls `reflect.ValueOf` on the inputs, which loses information because `json.Number` gets converted to a string (actually a `Value` whose `Kind` method returns `reflect.String`). This is bad because we want to handle strings and json.Numbers differently.

Additionally DeepEqual returns false if the types of the two values are different. Removing this section gives runtime errors, but it needs to be removed for our purposes so we can compare `json.Number` and integers, etc.

One option would be to merge in the current `isEqual` function for now, but I add an issue noting that `enum` and `isEqual` are going to need better tests before they're production ready.