Updated tests to new version of Python

Finally using the latest version. Renamed some assertions and
started using assertIsInstance.
Renamed test files

Tests that are ported from InPUT4j are prefixed with test_api_.
This allows them to be distinguished from the actual unit tests
that are used during the development of this implementation.
Started adding parameters

Parameters only exist in the DesignSpace context.
Added simple implementations of Design and DesignSpace.
Parameters evaluate expressions and have a rudimentary mechanism
for detecting dependencies on other parameters.
Only integer parameters are supported and dependencies aren't
resolved at the moment.
Added parseDependencies

parseDependencies is a function that looks at an expression and
returns the set of parameters that the expression references.
Added dependencies to parameters
Added fixed parameter values
Added fixed parameter expressions
Split isDependent method
Changed parameter access in DesignSpace

- Removed getParameter
- Renamed getParams to getSupportedParamIds (required by the API)
Added dependency initialization

DesignSpace can go through all parameters and provide them with the
parameters they depend on (objects instead of IDs).
Added Evaluator util class

- Added util module
- Added Evaluator class to util
- Moved expression parsing and evaluation to Evaluator
Cleaned DesignSpace and Param interfaces

- Removed getValue from DesignSpace
- Removed parseDependencies from Param
Started adding ParamStore

- Added two utility functions that probably belong in ParamStore
    - depLen calculates the dependency depth of a parameter
    - initOrder maps dependency depth to parameter IDs
- ParamStore doesn't really do anything yet
Expanded DesignSpace and ParamStore

- DesignSpace no allows parameters to be added.
- A DesignSpace is created using a ParamStore.
- Added methods to ParamStore for adding parameters
    and setting fixed parameter values.
- A DesignSpace can now initialize dependent parameters.
ParamStore can handle multiple parameters

- One or more parameters can be given when creating a ParamStore
- One or more parameters can be added to an existing ParamStore
Changed DesignSpace.nextDesign

This is a "complete" implementation of the method.
Each design is created by initializing all parameters (nothing is
cached). In particular, each parameter is only initialized once.
In other words, all parameters should therefore be consistent.
Added docstrings and cleaned DesignSpace interface

- initParam has been made pseudo private.
- initParamDependencies and __getDependentParams have been
    deprecated. They were a naive solution to a non-trivial problem.
- Updated tests accordingly.
Removed deprecated DesignSpace methods
Expanded ParamStore interface

- Added a getInitializationOrder method.
- The finalize method now performs some processing and also marks
    the store as "read-only", preventing parameters from being added.
- Added docstrings.
Extended ParamStore interface

- Added getParameters and getSupportedParamIds.
- Made parameters and dependencies pseudo-private.