Profile option

A simple implementation of #324, if `profile=True` is set in the `run` call, `Network.profiling_info` contains a sorted list of `(name, time)` tuples after the run, stating the total amount of run time spent in the different `CodeObject`s. It's very basic, but I think already like this it is quite useful.