feat(util): add optional template

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(util/lazy_list): 'lazier' lazy_lists

In the new implementation, even the head of the lazy list is computed on demand.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(library/tactic): add mk_simple_tactic template

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(util/lazy_list): check for interruption between pulls

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(lazy_list): add timeout template for lazy_lists

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
feat(util/lazy_list): add par template for lazy lists)

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
refactor(library/tactic): modify par and try_for tactics

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
style(util): missing includes

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
style(library/tactic): missing include

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>