Commented the code.

- Added comments in the code so that people can learn what it does.
- Added code_version variable.
The difference between code_version and the version variables is that code_version refers to changes in the code that aren't visible, and version is general changes that are noticable.
If you use this, please read the readme.md!