Remove NetBeans metadata from the project
Reorganize tests
Clean up documentation
Refactor decoder to read from an interface instead of a string

Using a string as input to the decoder meant it was required to read the whole length of data to
decode into memory, which meant decoding was a potentially very heavy on memory. This change
abstracts out the input to the decoder, and adds a DataSource called String to replace it. This
change breaks backwards compatibility.
Add file handle data source

This data source provides a way to decode a bencoded a file with only a handle to that file. This
avoids the entire file into memory.
Make the addition of the DataSource interface backwards compatible

The addition of the DataSource interface originally changed the signature
of `Bencode::decode` to use a type hint. This broke backwards compatibility
(the function previously took a string) and was clunky to use. This change
implicitly converts non-DataSource inputs to `DataSource\String`.