Explicitly check for GET returning None
Make db.generate_key more consistent

Wrap singleton inputs in a tuple.
Use config file to connect to redis
Remove unnecessary mice_attributes list
Make Concepts truthy if they have phi
Add inputs_with_cut and outputs_with_cut to Node
Add Network.indices2nodes function
Add cut parameter to test_connections
Clarify Subsystem.expand_repertoire
Add Subsystem.concept
Add some TODOs
Return null concept if prechecks fail, not None

And pass the cut when testing connections in concept prechecks
Implement new concept caching logic
Add and improve big_phi tests

- Test compute.complexes.
- Flush database before every test.
- Check more than just phi value.
Check purview matches repertoire when making MICE
Fallback to default redis settings if no config
Add Subsystem.node_indices attribute
Record external node info in NormalizedMechanism

For the purposes of big Phi calculation, the causal structure of
mechanisms depends on which of their inputs and outputs lie outside of
the candidate set (which of them are "external nodes"). So, when
checking if a concept has already been computed (by looking up the hash
of a NormalizedMechanism) we need to take this into account; therefore
we record which of a mechanisms inputs/outputs are external when
normalizing a mechanism, and include this in its hash.