* Helper functions in daemon/save.c will be used in project save functionality as well
* Graph iteration callbacks now receive the handle of the graph being iterated
* Indention is now more flexible because now it is not string but an integer
* Room creation/destruction is now separeted from starting/stopping
(creating/destroying jmcore links)
* Rooms can now be created and destryed when studio is stopped
* Rooms are started/stopped when studio is started/stopped
Apart from better interraction of studio start/stop and room
lifecycles, it is now possible to implement load of studio with rooms
because during studio load rooms have to be created in stopped state
and eventually started only at later stage, during studio start.
There are three types of ports depeneding on references to them:
* ports that are referenced from jack and studio graphs
* ports that are referenced from jack and room graphs
* studio-room link ports that are referenced from studio and room graphs
The old approach was to destroy ports when removing references from jack graph.
Studio-room link ports were destroyed when removing the room.
However this caused double free when removing app ports that appear in jack and
room graphs.
The introduced implementation uses reference counting of graph references to ports.
Temporary references (like the one returned by port constructor and graph_get_port())
are not tracked.