factor out GraphContextManager/Provider into separate traits

not strictly needed for #124 but nicer imho because of the
growing complexity of the graph context managing stuff