Feature/filetypeextractor

Added a FileTypeExtractor that can extract basic information about Commons files. This required moving the Image URL generation code from the ImageExtractor into ExtractorUtils.
Language.Commons is actually a Map.get, so it's pretty expensive: best to store this once outside the look (maybe as a private val, which is what it started life as).

context.language is thread-safe and is distribute-safe, but it's a good rule of thumb NOT to access "context" inside the extract function, but as a private, class-level variable -- this makes it more easy for the system to not need to look it up when running extract() over multiple computers or something.