Fix miscellaneous draft v3 bugs and add new unit tests

These changes include a number of fixes for some bugs that were identified by tests that are part of a draft v3 test suite.

* uniqueItems: Now correctly identifies duplicate objects of type stdClass in the array.
* format
  * date-time: Now supports milliseconds in the ISO-8601 format.
  * regex: Validates the regex pattern before trying to use it for pattern matching.
* divisibleBy: Improved functionality to correctly determine the specified divisibility.
* enum: Now works when there are arrays or objects of type stdClass in an enum.

A number of new unit tests from a draft v3 test suite were added to verify the correctness of the updated new functionality.