runtime: fix disconnecting a msg port on a hier_block2

It seems that when you call msg_connect, the call to message_port_sub
is not made until the flowgraph has been flattened, so the
subscription does not belong to the hier block, it belongs to the
block inside the hier block that has the message output. However, when
you call msg_disconnect, it simply attempts to call message_port_unsub
on on the hier block, which fails, as the hier block has no
subscriptions."

The fix simply checks if the source or destination blocks are
hierarchical, and if they are, resolves which block in the
hierarchical block has the message port, then calls message_port_unsub
with that block.
Merge branch 'maint'
Merge branch 'master' into next