Check if a Method is being redefined; throw an error if so

Also added an option to use full package name as the Action name instead
of just the last part; all '::' will be replaced with dots:
Foo::Bar::Baz -> Foo.Bar.Baz

Added some more docs.
Added 'strict' Method option; defaults to falsy
Some more comments.
WIP docs