text: Title: Add support for alternative acceleration devices
  Body: Currently, there isn't a good way to detect and run models on alternative GPU-like acceleration devices. The current code is geared towards CUDA devices. The code should be updated to look for CUDA, MPS and XPU devices.
  
  When `gpu=True` or `gpu=<positive int>` the logic should continue to first look for CUDA devices then MPS, if available and finally XPU.
  
  More information on MPS and XPU devices can be found at the links below.
  
  - MPS - https://pytorch.org/docs/stable/notes/mps.html
  - XPU - https://pytorch.org/tutorials/recipes/intel_extension_for_pytorch.html
  
  This change will give better overall support on Macbook M1's and Windows machines with discrete Intel GPUs such as Intel Arc.
  
  The following additional links have more information on other devices that should work with the current version of txtai.
  
  - ROCm - https://pytorch.org/docs/stable/notes/hip.html
  - ONNX - https://onnxruntime.ai/docs/execution-providers/
  
  [DirectML](https://github.com/microsoft/DirectML) is another project to watch. But at this time it doesn't provide a way to instantiate a device via a device string. 
  