plugins best practices

I've updated the plugins best practices reflecting advancements that was made over the years since the epic [Plugin namespacing: A good solution?](https://groups.google.com/d/msg/simple-build-tool/cCCYbopR6JQ/CslOL4TCb7IJ) thread that started this page.

It's more opinionated (avoid commands, provide feature in `object`) and strongly worded about things that previously waffled (I removed the bit about task scoping being optional because that disclaimer predates `::` notation in the shell). /review @jsuereth 
This is kind of a lie.  Commands DO compose well, like functions (State => State).

The point about leveraging the task system is important.  However, I'd focus on the fact that:

Settings can only be composed with other Settings
Tasks can only be composed of other Tasks + Settings
Input Tasks can only be composed of other Input Tasks, Settings or Tasks
Commands can use any of the above, but none of the above can directly use a command.  

In addition, great care should be taken when writing commands to ensure that State is not corrupted (think mutable fun).