improve memoize with size limit

- previous implementation was dropping complete
  hash-table whenever max size was reached

- new implementation simply replaces old values
  in a fixed size hash-table when hashes collide

- use cuckoo hashing for better space usage and to
  reduce collisions of frequently used values
Issue 13689: byCodeUnit fails to be a random access range.

Add static assert to ensure random accessability.
Reference std.range.chain from joiner.
std.format: clean imports

remove new private stuff

add local import

add local import

remove global std.con import
Consistent use of element variable name in .map ddocs.
std.utf: clean imports
std.encoding: clean imports
Add `@nogc` attribute
Merge pull request #2674 from sinkuu/uni

Mark some functions in std.uni as `@nogc`
Merge pull request #2670 from 9il/encode

std.encoding: clean imports
std.traits: clean imports

remove new private stuff
Merge pull request #2669 from 9il/utf

std.utf: clean imports
Remove private staticFilter from AutoImplement and use std.typetuple.Filter instead
std.uni: clean imports
std.uuid: clean imports
std.digest.*: clean imports
std.bitmanip: clean imports

revert some changes
Merge pull request #2671 from 9il/uni

std.uni: clean imports
Merge pull request #2678 from 9il/uuid

std.uuid: clean imports
Merge pull request #2680 from 9il/bm

std.bitmanip: clean imports