3.0 Add index/constraint reflection

Adds the ability to reflect indexes/constraints. Since indexes are always reflected with field I've removed the duplicated code when processing fields/indexes where possible.

I've modified SchemaCollection to throw exceptions when an error is encountered when reflecting either columns or indexes. These cases should never come up and I felt they should be treated like that.