refactor split_strategies 1 and 2

@ahbuntu @z23han  I spoke briefly with Ahmad about this: I refactored the split strategy code and checked my changes into a new branch, "proj/dave-refactor". Please review.

Fundamentally, I believe it'll achieve similar results to before, but it's a bit tidier and more easily extendable. In particular, I felt that I needed to do this to better isolate the different components of the balancing routine so that we can selectively enable/disable dumb/smart split/merge strategies.

Note that I switched to using -DSPLIT_STRATEGY_FLAGS in the Makefile. This is a bitmask that gets AND-wise compared against SPLIT_STRATEGY_1 (0x01), ..._2 (0x02) and so forth.

Please let me know if you have questions.