[scala] Refactor Scala RowList with self-types, for better implicits (operation on ScalaRowList returning ScalaRowList, not core RowList which would be converted again on next operation).

```scala
// Before
val l1a: RowList1[String] = rowList1(classOf[String])
val l1b: RowList1[String] = l1a :+ "B" // convert on :+ ...
// but core type RowList1 is returned

// Now
val l1a = rowList1(classOf[String])
val l1b: ScalaRowList1[A] = l1a :+ "B" // convert on :+ ...
// and keep it as pimped Scala type
val l1c: ScalaRowList1[A] = l1b :+ "C" // no conversion required
```

Typesafe append operations are generated along with generated row lists, so append-row operation and related Row implicits are no longer required.

```scala
// Before
rowList3 :+ row3(a, b, c) // no supported due to inference issues

// Now
rowList3 :+ (a, b, c)
```
Remove useless internal Cell type
[core] Deprecates append-row operation on RowList, replaced by multivalue-append.
Prevents null inference issues.

```java
import acolyte.RowLists;
import acolyte.Rows;

// Before
RowLists.rowList2(String.class, Integer.class).
  append(Rows.row2("str", 1)); // now deprecated

RowLists.rowList2(String.class, Integer.class).
  append("str", 1);
```
Update documentation