Merge branch 'release/0.4.0' into develop
Next version: 0.5.0
TODO: rearranged tasks
matrixmul: added transposed_a and transposed_b options
test/computations/matrixmul: rearranged testcases
test/computations/matrixmul: fixed performance batch calculation
matrixmul: added local memory padding to avoid bank conflicts
matrixmul: added a missing namespace qualifier
test/computations/matrixmul: added a testcase for the undefined array shape
test/helpers: added struct dtypes support to get_test_array()
cluda/dtypes: added struct dtypes support to c_constant()
transpose.mako: removed commented code
core/transformation: not deriving KernelParameter from Type

We need to initialize ``ctype`` attribute manually and process it properly in case if it is a module.
reduce: using a dtype'd value in predicates instead of a string
test/computations/reduce: added a testcase for struct reduction
test/helpers: added support of struct dtypes to diff_is_negligible()
reduce: fixed a bug with incorrect condition on the reduction power
test/computations/reduce: added a simple performance test
reduce.mako: removed a redundant temporary variable
test/computations/reduce: added a forgotten import