Check for duplicate definition of Rust items.
Add a monadic construction for partial error in the compiling chain, a partial error is an error that is not fatal for the current computation (and so we can find other error before exiting).
Implement a generic duplicate module that will be used for checking rule and Rust items duplication. It also generates a map<Ident, Item>.
Use Partial instead of Option in the semantic module and use the generic duplicate for rules and Rust items.
Use Partial everywhere needed instead of Option.
Fix compiler warning about lifetimes shadowing.
Filter Rust items that are not functions, only keep functions for now.
Check for undeclared actions.