Filter layer

Filter_layer developed as discussed in #1448, implemented following the suggestions by @sguada and @longjon (paragraph 2(i)).

This layer accepts 2+ bottom blobs, the first blob acts as a selector, so it should be a vector s={0,1,2, .. n} in [0,1], and the remaining blobs are blobs to be filtered. Each value of 1 in the selector vector means that the items at the corresponding indices int the bottom_blobs[1+] will be kept, on the contrary a values of 0 means the items with corresponding symbols will be filtered out.
So only non-filtered items will be forwarded and afterwards will receive backpropagation. 

As param the filter_layer needs a *need_back_prop vector*. This is needed because some blob could contains labels, and therefore will not need backpropagation. The need_back_prop vector as the same size as the top vector, and accepts 1s and 0s depending on whether it should be backpropagated or not.

This PR needs #1483 and #1484
Use `caffe_set` to zero-fill. Not only is this code constructing a useless buffer (and reconstructing the same buffer, in a loop), but it's super dangerous:

1. Never use `reinterpret_cast`.
2. You're assuming `sizeof(Dtype) < sizeof(double)`, or else you're reading off the end of your buffer.
3. You're assuming that arbitrary bytes pulled from a zero `double` will be the same as arbitrary bytes of a zero `Dtype`.

Got it? Seeing the word `double` in this templated code is a huge red flag...