Replace assert(0) with __builtin_unreachable

The details of __builtin_unreachable() is described briefly here. 
[ nondot ] (http://nondot.org/sabre/LLVMNotes/BuiltinUnreachable.txt)

Have made changes for all platforms including Windows and AIX. But tested only on Linux as I have access 
only to Linux. If some body can spin a test. It will be great.