Added loop point support to sf::Music and sf::SoundBuffer

After working a bit with SFML, I noticed that I couldn't set any custom loop points for sounds, and I need them for a game I'm working on. I spotted issue #177 sitting around, so I figured I would try implementing myself.

For sf::Music / sf::SoundStream, I added a feature to detect a loop point and cut off the streaming of the buffer, and a pair of virtual functions that can allow sf::SoundStream to let its derived class decide where to seek upon looping. It's accomplished entirely within those two classes without doing anything too funny with OpenAL, and I'm happy with what I managed to accomplish with it.

For sf::SoundBuffer / sf::Sound, I ran into some more constraints. OpenAL-Soft has a way to set loop points, but it's not a well-documented feature, and it is also a buffer trait, rather than a source trait. It has a few more restrictions on the allowable values compared to the Music version because of this. It uses an "enum" value called AL_LOOP_POINTS_SOFT defined in "alext.h", which was present in SFML but not included, and I figured it was fair game to use. If not, then I can take the SoundBuffer implementation out.

The inline documentation will explain any interface differences, but they're roughly the same, with getLoopStart(), getLoopEnd(), setLoopPointsFromTime(), and setLoopPointsFromSamples(). Three of those work with sf::Time, to keep everything consistent, the fourth is if you have an exact sample position you want to use.

I hope this isn't frowned upon, but for testing, I augmented the SFML Sound Example to include some additional playings of the resource sounds, and demonstrating some of the extra features of the Music implementations. At least it should be easy to build and test. If any modification or more proof-of-functionality is needed, please let me know!
The default values are for ease of use when calling. In a lot of cases, I can see a user wanting to loop from the end of the file back to the starting loop-point. And since I define an end value of Zero to mean "end of file," then a caller only needs to pass the loop-start to achieve that effect. Similarly, calling it with no arguments is defined to reset the loop range back to the full duration of the sound.

Basically, those are there to make things simpler, since you won't always need to have 2 explicit time points on hand for some straightforward use cases.

(Before I forget, I should justify why it's safe to turn "end = Zero" into "end = Duration". Basically, if you consider a looping sound, then the beginning of the sound and the end of the sound essentially happen at the same point. So in the case of end, 0 serves as a safe representation of "wherever the default end-of-file loop is").