py: #if guard str_make_new when not needed.
stmhal: Reduce coupling between USB driver and readline.

This makes it easier to re-use readline.c and pyexec.c from stmhal in
other ports.
stmhal: Remove unnecessary HAL_Delay in readline loop.

The reason for having this delay is to reduce power consumption at the
REPL (HAL_Delay calls __WFI to idle the CPU).  But stdin_rx_chr has a
__WFI in it anyway, so this delay call is not needed.

By removing this call, the readline input can consume characters much
more quickly (before was limited to 1000 chrs/s), and has much reduced
dependency on the specific port.
map: Add empty fixed map.

Useful when need to call kw-receiving functions  without any keywords
from C, etc.
builtin: Reimplement __repl_print__() in terms of print().

Before, __repl_print__() used libc printf(), while print() used uPy streams
and own printf() implementation. This led to subtle, but confusing
differences in output when just doing "foo" vs "print(foo)" on interactive
prompt.
pfenv_printf: Properly implement %p format specifier.

Previously, it truncated pointer value to 32 bits on 64-bit systems.
stmhal: Enable uhashlib module; add heapq, hashlib weak links.

hashlib test passes on pyboard.