Initial commit

 - Basic directory stracture
 - Gitignore to ignore .idea directory
 - Add basic classes and interfaces.