APIs for scanning and shuffling source files

- define interfaces for representing source files and shufflers
- implements two simple representations of Java source files
- add tests