There is a lot of code duplication in surfman egl that could be avoided if we used traits and default implementations.