Use median of three as pivot

Use median of three as pivot in hoare_partition
Use Template

Use Template to support sorting on more types
Makefile & Comment updates

Add Makefile for MinGW