BOUT++: A framework for parallel plasma fluid simulations