Subdivision surfaces

This branch isn't ready to be merged yet, I'm opening the PR to start a discussion...

One possible sticking point is that the patch adds a
```
unsigned int _valence;
```

per node, something we have balked at doing in the past.