lib/stream: add Streamable interface

Signed-off-by: Jean Privat <jean@pryen.org>
lib: add new module `template`

Signed-off-by: Jean Privat <jean@pryen.org>
example: add an example for lib/template

Signed-off-by: Jean Privat <jean@pryen.org>