assert template should raise ArgumentError for unsupported layout types

fixes that  `assert_template(layout: 1)` will not fail (false positive), also tried to refactor `assert_template` by splitting up in smaller chunks covered in private methods. Stopped at :partial since it not seemed to be covered by tests. 
the refactoring revealed that `assert_matches_file` does not consume `message` as the other methods, i'm not sure if this is intended?