Experimental: removal of Optional() validators

This is an attempt at unifying the backend and frontend regexes.

A lot of the EditContainerForm fields were using both the Optional() and the RegExp() validator.

By changing the regexes so that the Optional() validator isn't required, is the first step to try and unify the backend and front end regexes.
utsname is using same regex on front and backend

also, use precompiled regexes for every field AND move all regular expressions to a new file, validation.py
refactor: remove RE_ from regexes

now that these are in a separate file, validation.py, it seems somewhat redundant
Refactor forms into module

Makes it a bit easier to read by splitting fields and widgets into their own files.

Also, introduce a NumberField, which is just like an IntegerField, except it uses an HTML 5 number input, that way we don't have to add type="number" to each integer field in the template layer anymore.
Move validation.py (containing regexes), into forms module
Found that pattern on a number input is redundant

Tested this on several browsers, it appears that type="number" on the input alone is enough to do number validation and the pattern is redundant, even with the pattern removed, typing something invalid still triggers the validation.
network_type is a dropdown, it doesn't need a pattern or placeholder
pattern is also redundant on slider combo widgets

these widgets only allow an integer anyway
Put Optional() validator back in, reset IP regexes to what they were before

Seems that a pattern on a field on the front end, is only checked if the field contains something, to have fields required on the front end, the required attribute has to be added in.

So... I put the Optional() validators back on the WTForm fields, reset the IP address regexes on the backend to what they were on Claudyus' repository, removing the ((..)|) around the regexes I added a few commits ago, and added the required attribute on fields that are required (utsname, and rootfs)

Also make link and macaddress IP address the same on the backend and the front end (for the mac address, the frontend regex was better, so I kept that one)
Make regexes the same on the front end and backend

I am pretty sure the path regex(es) are still wrong, the - needs to be escaped, I will look at that next.
New ValidationInput WTForms control

This input uses the regex from the backend on the front end.

This way, the regexes only need to be defined in one place, cleaning the form template code up too

This closes #37

Some of the regexes may still need fixing but at least they are defined in one place now.