Factor out weight initialization

This first pull is to demonstrate the potential application of 
weight, bias and mask initializer objects for Layers. In the pylearn2.linear.initializer module, we 
provide an example re-implementation of the Linear layer which 
we initialize with all 4 kinds of Initiliazers, plus another that 
tests the mask_weights constructor parameter. This test is called by calling: python initializer.py

The second step (not included in this pull request), will be 
to modify all non-conv Layer sublcasses to make use of these 
initializers.

The third step (not included in this pull request), will be to 
add convolutional initializer (functions or distinct classes?) and
to modify all conv Layer subclasses to make use of them.

The main advantages of this pull request are that it reduces the amount of constructor parameters for Layer subclasses, it allows the initialisation of any Layer subclass with pretrained weights and biases, and it makes the initialization process easier to understand (because it is divided into different classes, and has more documentation).