Custom markup (WORK IN PROGRESS)

This introduces the needed helpers and utilities to wrap a selection in a given node. It's unfinished since ``unwrap`` is not implemented and there many are corner cases not taken into account.