Refactor `Site#cleanup`

Move the cleanup logic out into a separate class, `Jekyll::Cleaner`.

This heavily reduces the complexity of the `Site` class. Behaviour should all stay the same, thus I added no new tests.