Script classification fixes

This pull request fixes the classification functions in `scripts` to only accept canonical signatures and public keys, as well as puts them under more strict testing.
There isn't much testing for false positives, which is important to ensure does not occur, but we can add those cases as/if we get them.

A major point of annoyance was a triangular (circular) dependency issue formed by `scripts`, `Address` and `ECPubKey`.
The problem has been added as an inline comment in daa2cb7.