Describe the bug
For users of deserialized ApplicationError, today we only offer the deserialized details in raw Python form (e.g. dicts and such). For ApplicationErrors that are deserialized, we should make the details property lazy, have a property for obtaining the raw details (that only works if raw details were set on create, i.e. in deserialization situations), and have a method that lets you access a detail by index and type hint.