Generic Mesh Type

This work adds `mesh_t` and assorted methods for having a single type to deal with for CSG interactions. This work is the foundation for additional I/O formats.

### Plan

  * [x] `mesh_t` base and methods 
  * [x] `stl_mesh_t` prototype
  * [x] `stl_mesh_t` tests
  * [x] Input should produce a `mesh_t` type instead of `stl_object`
  * [x] :point_up: Tests
  * [x] Use `mesh_t` methods to produce BSP trees instead of `stl_to_*` and `*_to_stl` methods.
  * [x] `mesh_t.write` method
  * [x] :point_up: Tests
  * [x] Use `mesh_t.write` to write results to disk
  * [x] Default write method should be able to break polygons > 3 verts down before writing

## Maybe?

  * [x] `bsp_node_t` backed `mesh_t` to avoid boilerplate conversions in the caller

## AND THEN

  * [ ] Update the FFI bindings to hide `stl_object` and use `mesh_t` 
  * [ ] Update `csgtool.rb` to use new bindings

## AND Finally 

  * [x] Make sure there are no new leaks