NioBuffer is now an interface.

- NioBuffers are now created via a factory.
- By default this uses java.nio buffers, but other are possible (for
example scala.js. web buffers)
- Simplified the NioBuffer interface, and ways to create them.
- Use direct buffers by default.
- Removed notions like rewind, position and clear (web buffers use
views for this for example).
- Started a web subdirectory to import in other projects with a SGL web
implementation and the start of a surface that uses a web canvas.