less warnings
removed void specializations; removed arbitrary conversions; added void* conversions
tests for pointer casts
allow explicit conversion to implement un-const
check void* conversion