libmcell: Exposed more fine grained control over running simulations

I refactored mcell_run_simulation into additional subtasks. In
particular, there is now mcell_run_iteration to run a single
iteration of simulation.

OBSERVATION: Due to the fact that much of the current libmcell API
has been refactored straight from the existing code, the API has
very stringent expectations for ordering of API calls which is
unpleasant and not obvious by just looking at the function signatures.
We need to try to improve this state of affairs. In addition, we could
add some logic to detect within an API call if the current state
is ready for a given call and if not, return an error.