ext-partition-types: Add 4:1 partitions

This patch adds support for 4:1 rectangular blocks to various common
data arrays, and adds new partition types to the EXT_PARTITION_TYPES
experiment which will use them.

This patch has the following restrictions, which can be lifted in
future patches:

  * ext-partition-types is incompatible with fp_mb_stats and supertx
    for the moment

  * Currently only 32x32 superblocks can use the new partition types

There's a slightly odd restriction about when we allow
PARTITION_HORZ_4 or PARTITION_VERT_4. Since these both live in the
EXT_PARTITION_TYPES CDF, read_partition() can only return them if both
has_rows and has_cols is true. This means that at least half of the
width and height of the block must be visible. It might be nice to
relax that restriction but that would imply a change to how we encode
partition types, which seems already to be in a state of flux, so
maybe it's better to wait until that has settled down.

Change-Id: Id7fc3fd0f762f35f63b3d3e3bf4e07c245c7b4fa
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index 61574dd..4ab93ad 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -812,6 +812,8 @@
       case PARTITION_NONE:
       case PARTITION_HORZ:
       case PARTITION_VERT:
+      case PARTITION_HORZ_4:
+      case PARTITION_VERT_4:
         update_partition_context(xd, mi_row, mi_col, subsize, bsize);
         break;
       case PARTITION_HORZ_A:
@@ -1053,6 +1055,9 @@
 
     assert(cm->mi_grid_visible[offset] == &cm->mi[offset]);
 
+    if (partition == PARTITION_HORZ_4 || partition == PARTITION_VERT_4)
+      return partition;
+
     if (partition != PARTITION_NONE && bsize > BLOCK_8X8 &&
         mi_row + hbs < cm->mi_rows && mi_col + hbs < cm->mi_cols) {
       const BLOCK_SIZE h = get_subsize(bsize, PARTITION_HORZ_A);