Gasoline: a flexible, parallel implementation of TreeSPH