Multiple credentials (take 2) - peer review please!

## Relationship to other issues
A second attempt from scratch at: https://github.com/LearningLocker/learninglocker/pull/192 

First step towards: https://github.com/LearningLocker/learninglocker/issues/121

This code is made more complex due to: https://github.com/LearningLocker/learninglocker/issues/193

## What this PR does
This code is designed to allow the management of multiple sets of Basic HTTP credentials for a single LRS. 

This now works and has a UI for creating clients that have a new set of credentials. The LRS will now accept statements using those credentials. I've not tested any endpoints other than POST statements. 

As yet it's not possible to add any metadata for the client or to edit or delete the client. 

## Peer review notes
I plan to review the code myself and make some comments. In some cases I've probably added/removed line breaks, which will need to be resolved before merging. 

I'd particularly appreciate input on the following:
* general comments on the code
* comments on the overall approach
* suggestions on whether or not this is achievable as a plugin and if so, how?
* where I've amended core code rather than creating new files, how this might be separated out or done differently. 

## Immediate next steps
* deleting clients
* edit client name and description
* generate new key for client

## Next significant development
* tagging statements by client. 
* tagging documents by client created and last modified.  
* filtering reports by client(s)