Fixed #19463 -- Add UUIDField

Added UUIDField. Not particularly complicated this one - no custom lookups or anything. Casts all values to `uuid.UUID` instances in python.

TODO:
- [x] More form field tests
- [x] Documentation

Squashed patch should be marked as fixing #19463.
There's a few issues with using `BinaryField`:
- MySQL-Python for python 3 has no support
- According to [the docs](https://docs.djangoproject.com/en/dev/ref/models/fields/#binaryfield) they can't be filtered on, which would be a fairly significant flaw
- They data format stored would be different to that likely used in string representations (i.e. in URLs, json etc) which would be the hex format. This means a user (or Django) would have to convert that string into a `uuid.UUID` object and then get the binary representation. I guess we might be doing this anyway.
- Aside from space in the database, I don't see any particular benefit if doing this.