Implemented Mark/Reset Stream Functionality

In order to play audio in an exported JAR file, the InputStream returned
from the kernel that holds the audio data may require multiple parsers
to examine the stream to determine whether they support it. These
parsers must be able to mark the stream, read enough data to determine
whether they support the stream, and, if not, reset the stream's read
pointer to its original position. If the input stream does not support
these operations, this method may fail with an IOException and no music
will play.