Break Up Bootstrap Crates
Right now the core bootstrap crate has a bunch of (theoretically) unrelated stuff in it like window management, input handling, and OpenGL bootstrapping code. In some of these cases there are genuine dependencies (like you need a window to be able to get input in most cases), but we should still be able to split them into separate crates to avoid things like having to recompile polygon after changing input handling code.
This needs to wait until #7 and #8 are mostly done, though, since we'll want to have a good feel for what the cross-platform constraints are before we start breaking these things up.
OpenGl and audio functionality have been broken into separate bootstrap-gl and bootstrap-audio crates. Other candidates are:
- Time: Could be
bootstrap-time, but the standard library also already has support for this so that may be good enough for us. - Input: On the one hand you usually need a window to get input so keeping input tied to the core window functionality makes sense, on the other hand it might be nice to break it into its own crate in case people want to be able to open windows but don't care about input. That decision can be pushed until a later date.