HPCC-8335 Option on a field to control the default value

The default value of a field will be used:

1. When a dictionary lookup does not find a match
2. When a dataset select indexes a non-existent row
3. When assigning SELF := [] in a transform
4. In the default row passed to transforms by a OUTER join
5. When reading from XML and a column is not present

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
HPCC-8335 Fix example and internal error checking when cast no_null

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
HPCC-8335 Fix more issues with DEFAULT on field

Includes:
- Fix problems with checking the range of default values
- Use createExprAttr(defaultAtom) to avoid inconsistencies
- Preserve default when creating a simplified record
- key file for the default example

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Merge pull request #3830 from ghalliday/dict-default

HPCC-8335 Option on a field to control the default value 

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>