match_prefix takes it's length as size_t
The pattern length can never be negative, semantically it makes much more
sense to accept size_t as the pattern_length. This simplifies a lot of
the code elsewhere as the match_prefix is commonly called with
pattern_length set to the strlen which returns size_t