Multi platform support

This is experiment branch to support multi platform.

- Some refactoring to separate metrics/spec generators
- Separates metrics/spec generators for linux to independent packages