add ThreadLocal storage for the Matchers

ThreadLocal storage to reduce allocations. Also copied the code for split()
from Pattern to avoid allocating the Matcher.