Implement drop statements with limits and predicates
Project-wide cleanup
 + Refactor some implementations
 + Add documentation to a number of classes
 + Misc warning removal