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.