Fix memory leak due to circular references.

Made the mistake of referencing the referenced, which meant that no FSA::Rules
object was ever destroyed until program exit. Nasty memory leak!

So use `Scalar::Util::weaken()` to weaken the circular references. This allows
the objects to be destroyed when they exit scope. Resolves #3.