Document responsibilites of classes

This is the plan for the future responsibilites of the classes
handling the system description, specifically storage of the
descriptions on disk. Subsequent commits will adapt the code to
match these responsibilities.
Move load method to SystemDescription
Move save method to SystemDescription
Add test for name validation
Move validate_name to SystemDescription
Add method SystemDescriptionStore.directory_for

This isolates the responsibility of creating a directory for a
system description in the SystemDescriptionStore class.
Change args order when creating SystemDescription

Make the SystemDescriptionStore object the second argument of the
constructor and move the JSON object to the third argument. This
reflects that all descriptions need some sort of storage, but only
some are constructed with an initial JSON object. The next step
will be to make the store parameter non-optional.
Make store mandatory for SystemDescription

The constructor of SystemDescription now takes a mandatory store
argument, so that all system descriptions have an explicit way of
storing the description.

For the cases where we only need a transient description which is
not supposed to be saved, there is the SystemDescriptionStoreMemory
class which provides transient storage and fails when it is
attempted to store data to disk.
Require store for SystemDescription.from_json

Make sure that also system descriptuns directly created from JSON
have a store object. In many cases this will be a transient store.
Make from_json args consistent with constructor

SystemDescription.from_json and SystemDescription.initialize take
the same arguments. Make them consistent by using the same order
of arguments for both.
Fix typo
Don't require store as argument for save
Remove load method from SystemDescriptionStore

Loading a system description is the responsibility of the store.
To reflect this the load method in SystemDescriptionStore is
removed.

This also makes loading and creating a new system description
symmetric:

```
SystemDescription.new(name, store)

SystemDescription.load(name, store)
```
Remove obsolete SystemDescriptionStore.save

SystemDescription.save replaces SystemDescriptionStore.save. It is
simpler to use and provides exactly the same functionality.

The tests for the save method were moved from the SystemDescriptionStore
test to the SystemDescription test.
Replace helper for transient descriptions by factory
Rename SystemDescriptionStoreMemory

Rename the class to SystemDescriptionMemoryStore as this reads
better as a word.
Fix style issues

This is based on the Hound report from pull request #422
Merge branch 'refactor_system_description_2'

Pull request #428