Changed velocity initialization

Now uses speed/direction to calculate initial velocities instead of
velocity.x/y from random().
Added setDirection() and setDirectionWithVariance()

The setDirectionWithVariance will come in handy when I go to implement
the new molecule splitting.
Changed molecule split formula

Now people can stop complaining that molecules "split randomly".
Fixed coloring issues.

Now atom color = molecule color, new molecule color = 1 of the atoms
color