alloc/dealloc thrashing reduction

The aim of this pull request is to reduce the amount of thrashing we're doing by allocating small, often short lived objects on the heap.

 * [x] Vetex lists to vertex arrays (#14)
 * [x] less/no temporary lists in `bsp.c:bsp_clip_polygons()` (Where destruction of them costs >95% of the runtime)
 * [x] :point_up: Take the approach from #15 and wrap `bsp_clip_polygon_array()` with `bsp_clip_polygons()`
 * [x] :point_up: stop using klist in bsp_subdivide, which weighs [more than twice](http://cl.ly/image/1N0I1t0u0H0V) the runtime of `poly_classify_poly` (#15)
 * [x] ~~Handle overflowing `POLY_MAX_VERTS` gracefully (See notes in #14)~~ **LATER**, now it's an assert

The initial changes are to start cleaning up access to `poly->vertices` through some helpers to make updating the containing structure easier.

 * [x] poly_vertex_count()
 * [x] poly_push_vertex()