Add FileResource
Minor changes
Add Javadoc
Fix null handling, return empty string

The previous behavior could return the string "null" or
throw an unchecked exception. Instead we want to return an
empty string.
Add missing # to the documentation
Add exists, isReadable and isWritable
Add UncheckedIOException

Java 8 has it, but we still rely on Java 7 libraries. That
might or might not change in the near future.
Add documentation, throw UncheckedIOException

Wrapping the IOException with a SystemException in this case was a
bad decision. Instead we let the caller decide what to do with
the IOException: handle it, rethrow it, or if the exception can't
be handled rethrow an UserException (if the exception is expected
to happen, and / or when it does, the reason is the caller) or a
SystemException (if the exception is never expected to happen,
and / or when it does, the reason is the system).
Throw UncheckedIOException if can't locate

If the resource cannot be located we throw a FileNotFoundException
wrapped with an UncheckedIOException.
Fix file extension when there is no dot ('.')

The correct behavior is to return an empty string when the
basename does not contain any dot ('.') character.
Add TestFileResource
Fix mixed up basename and filename

Mixed up these concepts before.

The filename is and should be the farthest element from the root in
the directory hierarchy. The filename may or may not contain a
filename extension.

The basename is and should be the filename without the filename
extension. The basename is the name of the file.
Merge branch 'master' into fileresource
Merge branch 'fileresource'