Expand endpoint and domain attributes

Separate out endpoint and domain attributes from fi_info into their own data structures.  The addition of domain attributes helps the user determine when an opened domain can be reused to create a new endpoint.  It also better indicates properties that are specific to a domain, such as the threading and progress models.