support scoped module names

This should probably be used everywhere that code validates a package name, although it's somewhat different from the `isOrganized` validator used by npm itself. Instead of using a simple regexp, it validates that the name starts with a `@`, has two parts separated by a `/`, and that those parts are URI safe.

Includes a test.