net.cpp now allows zero-sized batches

Implemented a way to allow zero-sized batches as discussed in #1448 with @sguada and @longjon (point 5).
The net now checks, before forwarding or backwarding anything, if some blob has *num == 0*, if so forward and backward are denyied and all subsequent layers are reshaped to avoid forward and bacward to those, too.
Actually the net doesn't allow a batch to have 0 size, but this could happen because #1482