I would object to making them subclass from `Expr`.  I've run into annoyances because they're both used as a `func` and are an *instance* of `Basic`.  Additionally, the `MatrixExpr` predicates definitely shouldn't subclass from `Expr`.  

My view is that they're not expressions or terms of any sort.  If we want to make them so then I think that that indicates a flaw or inflexibility in our grand design.