DLM lock and unlock functions
Introduce md_cluster_operations to handle cluster functions

This allows dynamic registering of cluster hooks.
Introduce md_cluster_info

md_cluster_info stores the cluster information in the MD device.

The join() is called when mddev detects it is a clustered device.
The main responsibilities are:
	1. Setup a DLM lockspace
	2. Setup all initial locks sucha s super block locks and bitmap lock (will come later)

The leave() clears up the lockspace and all the locks held.
Add node recovery callbacks
Lock MD super while updating superblock
Use separate event counters for bitmaps

Use independent event_counter_t for each bitmap. Each is 4k long so
as to make it independent of other bitmap events.

The idea is to keep each bitmap specific to the node and not change much of the bitmap code.

0                    4k                     8k                    12k
-------------------------------------------------------------------
| idle                | md super            | bitmap super        |
| ev counter[1]       | bm[1]               | bm[1, continued]    |
| ev_counter[2]       | bm[2]               | bm[2, continued]    |
| ev_counter[3]       | bm[3]               | bm[3, continued]    |

Questions:
1. Is updating events fields enough since it represents the dynamic fields of
   the bitmap superblock?
2. Not sure of the change to filemap_get_page()

TODO:
 * Fix for archs where PAGE_SIZE != 4k
 * Fix checks with respect to file_pages exceeding page->index
 * bad block logs if required
Lock bitmap while joining
Check other bitmaps

check_other_bitmaps looks superfluous here, but it would add more
code in the next few patches.
bitmap_create returns bitmap pointer

This is done to have multiple bitmaps open at the same time.
Pass slot_number to bitmap_create

Slot number is now a property of the bitmap. This would enable us to read the bitmap
outside of the mddev's bitmap.

This change looks more intrusive than I thought. However, this seems necessary to read
bitmaps of other nodes.
Copy set bits from another slot
Initiate recovery on node failure
Perform resync for cluster node failure

On node failure, the resync happens way too fast. There is something
wrong in that part of the code. sync_request is returning all
sectors as done.
Communication Framework
Communication: Send functions
Reload superblock upon receiving METADATA_UPDATE
Send suspend/resync-finished while performing resync
Suspend/Resync Finished action
Suspend writes in RAID1 if within range