Make is_many accessors more efficient

The first time the accessor is called, it makes up a rule in order to get
the template for later calls.  For the first call, it now just uses the
already created rule, instead of re-makign the rule from the template
Fix for previous commit 'Make is_many accessors more efficient'

If a parent class' reverse_as points to an id_class_by property, and the accessor
is called on a member of the child class, the id_class_by value needs to be
determined from the invoking object, not from the class the property is
defined on.
rename the test to reflect what it does now
Exception message improvements
_concrete_property_meta_for_class_and_name() now handles property names with dots

things like delegated.other_id
Handle handle an odd many-to-many relationship

Normal many-to-many relationships involve a pair of properties:
    1) an is-many property to retrieve the bridge objects
    2) an is-many, via-to property through the bridges to get the other things

And usually, you'd use this pattern on both sides of the many-to-many
relationship so either entity can get the set of related things.

This patch allows one side or the other (but not both) to specify the
relationship as a plain is-many relationship involving a reverse_as:

  class Driver {
    has_many => [
      cars => { is => 'Car', reverse_as => 'drivers' } # didn't work before
    ]
  }
and
  class Car {
    has_many => [
      car_drivers => { is => 'CarDriver', reverse_as => 'car' },
      drivers     => { is => 'Driver, via => 'car_drivers', to => 'driver' }
    ]
  }
whitespace
Experiment with a new indirect accessor implementation

The old code has if/else conditions to try and handle different situations.
It doesn't handle the case where the indirect accessor is via a non-standard
reverse-as many-to-many relationship.

This new code just gets the join list and builds a list of closures that can
get from here to there.  It doesn't yet work in the general case (especially
during bootstrapping), so it sets up a special accessor prop_new() for testing
Fix $UR::Context::initialized

The setup method wasn't setting it to true

Also, make the var package-global, so others can know when the context is
fully set up
Improve error message
whitespace
Changes to the experimental indirect accessor code

Don't use the fancy code for UR::* classes (recursion problems)

Don't use a collector sub for UR::Value when a join's foreign_class_name is
a UR::Value class

Finally, don't install a real sub in the package's namespace, since this is
still experimental
Fix indirect property value resolution for another corner case

If property A is via B, and B is part of a many-to-many relationship defined
using reverse_as (instead of the usual via an is_many property), then we now
handle it by using the default/basic bridging closures.

Also, remember the right @property_names to call when resolving the indirection
Expand the use of the same optimization in 9846be

for the singular version of is-many accessors, add_* and remove_*
Merge branch 'indirect-ro-refactor'

New code to handle a non-standard many-to-many relationship where
one half of the many-to-many is defined as a plain reverse_as, and the
matching half is the regular via(many)-to

Also handles a via/to property that is via this non-standard property