Implemented the Source class so that it'll actually be used

As a result I took out all the constructors directly accepting a filename
or a buffer and replaced them with constructors that simply access an object
of type Source.