add surfaceless support
Adds a runtime option to use surfaceless mode. Some parts based on !1 although it does not try to handle the API divergence between mesa gbm and minigbm. I think this would probably enough to work on ChromeOS if minigbm API were brought in line with mesa gbm.