Implement delete function on the list overview

- The delete button is now functional
- Implement error display through a Bootstrap modal
- Add javascript to recognise the error in the query string and display the correct message in the modal
Change the error message location from the query string to the hash string

- Instead of looking at the query string in the url the error code looks at the hash string (the #x part) in the url
- Code has been moved out of the document ready event
Sort the views so the all list views are together and the singular list views are together
Enforce uniqueness of list and todo item titles on the database and model level too

- Use clean() on the TodoList model instead of validate_unique() as Django apparently doesn't call that function automagically
- An error is raised on the title when it is not unique instead of on the model itself since the user can only update the title and not the person to whom the list belongs
Add a view to edit existing lists
Add confirmation view when deleting a list
Instead of copying the same code to every view we now use a mixin.

All the views that require the user to be logged in have had their decorate dispatch() removed and instead have a mixin added that decorates the as_view() function in the same way. It keeps the code clearer and there is now less copy pasting.
Add the ability to check and uncheck todo items
Update closed datetime when user closes a todo item
Implement the ability to add extra To Do items to a list
Implement deletiion of to do items
Add the ability to edit To Do items

- Add validation on the TodoItem model to avoid duplicates in the database
- Include a button that returns the user to the parent list without changing the item
- Remove old code that was left lying around