also add more definitions in types.pi, types.path, algebra.precategory
the (pre)category library still needs cleanup
authors of this commit: @avigad, @javra, @fpvandoorn
The new command provides a uniform way to set declaration attributes.
It replaces the commands: class, instance, coercion, multiple_instances,
reducible, irreducible
After this commit, Lean "cuts" the search after the first instance is
computed. To obtain the previous behavior, we must use the new command
multiple_instances <class-name>
closes#370