Change visibility of components
- Remove direct access to most of the shell components
- Remove pub(crate) when it does not make sense (the type wouldn't be accessible from outside anyway)
- Move the pub use to make the interesting part more accessible
- Grant access to the parser for external users