Refactor into classes

- Move logic for parsing and linting into new LessFile class
- Extend LessFile as LessCachedFile with caching specific implementation
- Move non grunt task files to tasks/lib to prevent being read by grunt
- Add extra tests for imports invalidation in less-file-spec.coffee