Create ex3_21_generics_version

To replace ex3_21.cpp 
This one is generics version using template, for general version please check @pezy's code.
Rename ex3_21_generics_version to ex3_21_generics_version.cpp
Delete ex3_21.cpp

check @Pezy's code instead.
Merge remote-tracking branch 'upstream/master'
merge @Mooophy 's clever version