kernel: Add support for Hardware Lock Elision

Adding XACQUIRE and XRELEASE prefixes to the atomic operations responsible
for releasing and acquiring a lock enable Hardware Lock Elision.
These prefixes are ignored on all CPUs that do not support Transactional
Memory Extensions, so that there is no need to check whether the feature
is avaialable.

PASUE instruction is guaranteed to abort transaction what may be useful if
lock acquisition fails.
kernel: Add lock elision in spinlock implementation

Replace atomic operations used in spinlock implementation with their
versions with HLE prefixes. Also, add transaction aborts where necessary.