text: Title: Add layers for tf and tf.keras
  Body: Continuing discussion started in pull-request #25 .
  
  So far: `tf.keras` и `keras` are different things now, they work on different input and have different recommendations for creating custom layers.
  
  This version seems to work for me with tensorflow.
  
  ```python
  import tensorflow as tf
  from einops.layers.keras import RearrangeMixin, ReduceMixin, UnknownSize
  
  class Rearrange(RearrangeMixin, tf.keras.layers.Layer):
      def call(self, inputs):
          return self._apply_recipe(inputs)
      
  class Reduce(ReduceMixin, tf.keras.layers.Layer):
      def call(self, inputs):
          return self._apply_recipe(inputs)    
  ```
  
  Example for eager execution
  ```python
  tf.enable_eager_execution()
  
  x = tf.zeros([4, 5], dtype='float32')
  Rearrange('i j -> j i')(x).shape
  Reduce('i j -> j', 'max')(x).shape
  ```
  
  And example without eager execution
  
  ```python
  import numpy
  x = tf.placeholder('float32')
  x.set_shape([None, None])
  with tf.Session().as_default():
      y = Rearrange('i j -> j i')(x).eval({x: numpy.zeros([5, 6], dtype='float32')})
      y = Reduce('i j -> j', 'max')(x).eval({x: numpy.zeros([5, 6], dtype='float32')})
  ```
  
  At least this seems to comply with tf guide 
  https://www.tensorflow.org/tutorials/eager/custom_layers
  
  My env:
  
  ```python
  python 3.6 (should not affect)
  In [2]: tensorflow.__version__
  Out[2]: '1.10.0'
  In [4]: keras.__version__ (should not affect)
  Out[4]: '2.2.4'
  ```
  