Always reverse URLs instead of hardcoding them

- Use {% url 'url-name' %} in templates
- Use reverse('url-name') and redirect('url-name') in views
If a file has no hashes, show message.
Reformatted all templates, externalised most javascript

Made minor changes and corrections in the markup, but most changes are whitespace.
Cleaning up validation, groups done