[gamestate] Add .current(). Add gamestate stack.

New methods:

function GS.current()
    retrieves currently active gamestate (i.e. the state on top of the
    stack)

function GS.push(state, ...)
    Pushes a state on the stack. Calls state:enter(...), but *not*
    state:leave() on the previous state.

function GS.pop()
    Pops a state from the stack, provided that there are states to pop.
    Calls state:leave() on the state on top of the stack before popping.
Add vector.dist2(a,b).