Changed custom pattern behavior to merge instead of overwrite

Tackling same issue as #461, but took a different approach and actually fixed broken tests & wrote new ones to account for the new functionality.

Details: The pattern type and custom patterns currently share the same argument in FileProcessor. (FileProcessor then used type checks to determine how to handle the supplied argument.) I de-coupled this functionality so that FileProcessor now requires a type String and a patterns Array (empty when there are no custom patterns), in addition to the other arguments that were previously there.

Let me know if you have any feedback. Thanks!