Add a FileInfo class which holds all info of a file ...

... and return that from getFileInfo, getDirectoryContent and search

This provides a more well-defined interface for file metadata than just using an array.
The ArrayAccess and JsonSerializable interface and provide backwards compatibility.

Having a well-defined way of handing file meta-data also makes it easier to pass the meta-data around between functions/apps instead of having to reload the meta-data from the database all the time

cc @DeepDiver1975 @karlitschek