Optimized sf::Listener with a cache

Two optimizations:
- Get functions return locally stored value
- Set functions call OpenAL only if value has changed
Exposed up vector in sf::Listener API

Closes #545