Multiple refactors
This MR addresses several design issues:
- 
Remove NoBiasattribute from Conv and FC, as it is better replaced by an input check, as for other operators with optional inputs (likeSlice,Split,Reshape...).- 
Fix #76 (closed).  
 - 
 - 
Add a generic and consistant mechanism to handle optional inputs. - 
Fix #126 (closed).  
 - 
 
I propose to replace the nbData and nbParam members of an Operator with a list of input category that can be one of the following:
enum class InputCategory {
    Data,
    Param,
    OptionalData,
    OptionalParam
};
This would add more flexibility and more clarity in the specification of the operator/node inputs. The input category would not have to follow a specific order.
The call to the OperatorTensor constructor would change, for the convolution, from:
OperatorTensor(Type, 1, 2, 1)
to
OperatorTensor(Type, {Data, Param, OptionalParam}, 1)
Note: I used input "category" instead of "type" to avoid confusion with operator type and data type.
- 
Add 1D Conv and Pad implementations.  - 
Remove initGrad(), which is easily forgettable and use lazy initialization (with zeros initialization).