Add density-based functionality to the Tank

The Tank now sorts fluids by density, like it would in real life. Lava
is below water is below oil.
It also renders nagative-density fluids upside-down, and fluids with 0
density in the middle.
The getBottomTank() and getTopTank() methods now only go to the last
tank with the same fluid as the tank preforming the search, or if the
tank is empty, to the last tank with the same fluid as the first tank
with some fluid.