btrfs: add EXTENT_FLAG_SWAPFILE

Extents mapping a swap file should remain pinned in memory in order to
avoid doing allocations to look up an extent when we're already low on
memory. Rather than overloading EXTENT_FLAG_PINNED, add a new flag
specifically for this purpose.
btrfs: enable swap file support

Implement the swap file a_ops on btrfs. Activation does two things:

1. Checks for a usable swap file: it must be fully allocated (no holes),
   support direct I/O (so no compressed or inline extents) and should be
   nocow in order to avoid doing a bunch of allocations doing a COW when
   we're already low on memory
2. Pins the extent maps in memory with the EXTENT_FLAG_SWAPFILE

Deactivation unpins all of the extent maps.