Add SplFileInfo init functionality

This adds functionality for using the file info provided by an SplFileInfo object directly, rather than using only the path it provides.

The main purpose of this is to allow files that don't have extensions (for example, uploaded files) to still be interpreted and parsed correctly.