Better handling of face part parameters

@itsthatguy
* If the requested face part isn't there, we use the 'first' one we have
  (ordered by the filesystem call)
* If the requested face part is 'x', we don't show that part
* Significant refactor of all filesystem stuff into a helper class