Miscellaneous changes

Two bug fixes:
 * Missing drop for Array2D 3D
 * Typo != used instead of |=

Added a utility function to create a preferred compute context