Update config setup to be friendlier when using Filemanager as part of another project

I'm primarily using Filemanager as an extension at work so I'm interested in seeing the front-end and back-end modularized, and being able to function independently of each other. Here are the main things I did to decouple them for my project.
1. The config file is shared between front-end and back-end so I moved it into a config/ folder for ease of management. 
2. Paths to Filemanager's internal files set by `__DIR__` to support having Filemanager root folder be in side another project's vendor/ folder. This makes it compatible to be dropped into another project, and follow many popular framework naming convention
3. The config file has options related to paths to different places broken off into its own JSON property for ease of reading.

The code so far has been focusing on the back-end. I will submit another pull request for front-end changes.
I've also done refactoring of the getfolder() to make it easier to read while I was studying the code as well.

Thank you for your work. I appreciate this project very much.
My line of thinking is that
1. Array merge is an expensive operation. Since the original code was always looking at the same 2 files, the finally array is always going to come out the same in every case. I don't believe the benefit of having user & default file outweigh the cost of the operation, which happens for every request. In *my* use-case with thousands of requests, I feel this could have an impact.
2. If the user would like to have an archive of what the default was before they start making changes, they can make their own copy or re-download from source again to see.