Support for Demo.__init__ to take bz2 filepaths and file-like objects

Accepting file-like objects lets the developer worry about how they store and fetch the replays files, rather than Skadi making assumptions.

Accepting bz2 file-paths means lazy devs (RJackson) don't have to do anything with replays obtained out-of-client. :)