Improved Mat::release()

@SpecLad, @ilya-lavrenov  I tried to understand what was going on in the ```.create()``` of the ```Mat``` class. From what I understood, if the current object has the same number of ```rows``` and ```cols``` [or same ```size[i]``` for each ```i```] as the one specified in the function call, we need not reallocate space. But, if atleast one is different, it calls ```.release()``` first  and then allocates the required memory spaces. So, considering this, if an object is released, we want it to be reset to initial conditions.
Now, ```rows``` and ```cols``` are also made zero because if ```dims``` > 2, they are both equal to -1 and are not reset by the previously changed code.

This is a continuation of https://github.com/Itseez/opencv/pull/2891