A big cleanup of (1) atom extensions, (2) DCG-based replacement, (3) DCG support for C.

* [ATOM_EXT,SC] Very profound cleanup, doing away with 20 predicates!
* [ATOM_EXT,DOC] Added header documentation explaining how to do splitting, stripping, titlecase, and replacement on atoms.
* [ATOM_EXT,NEW] New implementation for splitting an atom according to an arbitrary number of split subatoms.
* [ATOM_EXT,NEW] New implementation for taking the first split, which is more efficient than creating all splits and taking the first one.
* [ATOM_EXT,SC] Vastly simplified code for splitting atoms. This can be done with atomic_list_concat(-,+,+)!
* [ATOM_EXT,NEW] New implementation for split_atom_length/3, strip_atom[_begin,_end]/3. Much shorter code and more efficient (no translations to code lists / character lists).
* [ATOM_EXT,NEW] New implementation for truncate/3. Previous implementation was broken for short strings with small maximum lengths and for maximum length smaller than the truncation subatom.
* [DCG_C,SC] Rewrote c_convert//0 using the new dcg_replace//1.
* [DCG_C,NEW] Added c_name//0, based on a predecessor that operated on atoms.
* [DCG_GENERIC,SC] dcg_phrase/2 is now a simple wrapper around dcg_phrase/3.
* [DCG_GENERIC,EXT] Extended the functionality of dcg_phrase/3 to work on atomic arguments (used to be atoms, i.e. exclusing numbers), and to work for instantiations (+:atom,?:atom), (?:atom,+atom), (?:atom,?:atom), (+:list(code),?:list(code)), (?:list(code),+:list(code)).
* [DCG_REPLACE,NEW] Added dcg_replace//1, allowing an arbitrary number of DCG rule-based replacements to be defined (used to be exactly one).
* [DCG_REPLACE,SC] dcg_replace//2 is now a simple wrapper around dcg_replace//1.