[Core] Wolowitz: Use Moo to make object programming, it's more powerful.
[Core] Wolowitz: Use Type::Tiny a awesome module to validate type of attributes.
[Tests] 01-dir: Fix test with new form.
[Core] Wolowitz: Use Type::Params to validate paramater of public method.
[Documentation] Dist: Use PodWeaver to organize documentation, it's awesome.
[Core] Wolowitz: Reidentation.