Improves validation and error handling of record workout form

* Writing some integration tests I noticed that the record_workout() view
  wasn't handling invalid field values very well - throwing errors at the user
* I've added some handling for this inside a try/except block, and passed
  errors back to the template via response.context
* Doing this I also realised I could improve the code used to create a new
  workout instance using the POST data - so I now pass request.POST to the
  WorkoutForm instead of using the Workout Model
* To re-use the error message styling I've created a new class in layout.less
  - this meant I had to update some other templates too
* I will later add some client side validaiton to reduce the chance
  of us even sending a request with invalid data to the server
Successful submission of a DailyNutritionForm now re-directed the user to
the page detailing the form values.
* Previously we returned the nutrition page, but this didn't give a
  clear indication if the form submission was successful.
* I've also used a better variable name to represent the object returned
  by the ModelForm save() method - as this is a model instance not a form
  as the previous variable name suggested.
Improves the exercises() view so the successful creation of a new exercise
results in the user being redirected to a specific exercise page.
* Previously we rendered the exercises template again, which gave no
  clear indication to the user if their form submission was successful or not.
* I've also improve the docstring of the view to better describe this
  functionality.
We should use the exercise objects clean name when redirecting, not
it's user friendly name.
Some tidying up of the custom login() view.

* Shortened the docstring so it fits on one line.
* Placed the is_authenticated() logic at the beginning of the view
  to rediuce DRY.
* Removed un-necessary assigment of username and password to variables
* I still want to remove the HTTP_REFERER logic but I will tackle that later
Adds basic client side validation of forms
* Stops forms being submitted with missing input fields
  using  the jQuery validation plugin
* Will add more extensive validation later
* Decided to use this rather than the HTML5 required attribute to
  ensure cross-browser consistency in UI