Validation for S3 UI fields

Closes #30 

Uses the new i18n system for error messages, and HTML5 form validation attributes.
I just think it's a bit messy having a massive regex with a bunch of ORs between all the valid strings, and an array presence check is cleaner.

I guess I could construct the pattern by joining the array into a string though if you think that's better?