Opening up FilePreProcessor to make it extensible. Fix for #322

Making methods virtual / protected to allow inheritors to easily override.