Allow reloading rst files and allow source to be ''

* Before, if you set `source` to something if you tried later to set it to the empty string, `''` you'd get an error. This changes it to allow empty string, and if the empty string is given it'll set `self.text` to the empty string (clear it).
* Before, if a file already existed in the `self.toctrees` dict, when setting `source` to this filename again (after having changed `source` to a second filename in between), nothing would happen. This changes to reload the file when this happens, in case the file contents changed.