intel-iommu: add fault reporting for Invalidation Queue errors

Handles Invalidation Queue errors and use vtd_handle_inv_queue_error() to
generate interrupt event.

Signed-off-by: Le Tan <tamlokveer@gmail.com>
intel-iommu: complete supports for fault reporting

Fix up codes to support fault reporting:
1. Check the FPD field in context-entry and "qualified" faults;
2. Add cap and ecap to IntelIOMMUState;
3. Check the programming of context-entry;
4. Check if gpa exceeds the limits MIN(AGAW, MGAW);
5. Check the access right permission of second level paging entries, but the
access is always read now because the IOMMU function is not passed the real
access type for now;
6. Check reserved field in root-entry;
7. Check reserved field in context-entry;
8. Check reserved field in second level paging entries;

Signed-off-by: Le Tan <tamlokveer@gmail.com>