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.
Introduce BITMAP_ACTIVE flag

If a node dies, we would know that the bitmap is unclean if the
BITMAP_ACTIVE flag is set *and* we can get a PW lock on
the bitmap_lockres
Copy set bits from another slot
Initiate recovery on node failure
Perform resync for cluster node failure
Communication Framework
Communication: Send functions
Reload the MD superblock when we receive METADATA_UPDATE message

The actual reading is deferred to the gloabal WQ. This may not be ideal.