Improving Trace support; Adding FATAL and ASSERT.

1. New Trace method; fatal_P() to print message with line number and
function name and terminate program.
2. New Trace macro FATAL() to support fatal_P with line number and
function name.
3. New Trace macro ASSERT() in debug mode will validate expression and
if false will call FATAL.
Adding const where possible in class definitions.
Improving boolean return values; using constant names instead of values.