Refactoring in preparation for OpenCL support:
1. Multiple models are supported.
2. All model-specific code removed from main()
3. Floating point type unified across the project.
4. Makefile tweaked for better code optimization.
5. Unused headers and libs removed.