Refactor cop handling

As noted in the commit message of 25aab11, I've been thinking about the design around `Cop#processed_source` these days. I considered several ways but could not figure out which is the best, so I left it for now. I think we'll revisit the design of Cop class when we go about exposing it as API.