inlcudes: narrow down include scopes

Having the includes where we need them speeds up the build (full and incremental) and is clearer.
machine-canvas-item: fix connecting machines from context menu

If the did not move between press/release it was a click and we need to let that
event fall through to the canvas.
includes: move the persitence iface to the private includes

The persistence iface is used by the core library for song_io. It pulls the xml
libs which are otherwise not required. First step to make this more localized.
persistence: move the string formatting/parsing helpers to tools

Avoid that code needs to pull persistence.h (which pulls libxml headers) to get
these helpers.