Update darray

Rename Darray to DArray

More error-handling-friendly interface.

Error codes should not be mixed with returned values (unless sometimes
when they are positive ints... maybe).
E.g. if we had a signature

    DArray *da_new(...);

since da_new(...) could fail, we would for example return NULL on
failure (e.g., `malloc()` does this). However, in this case,
there is a burden of allocating memory (and of freeing it) for
something (DArray) whose size is known at compile time; and anyway
isn't going to live long for the usage we make of it in this project.

I would have originally prefered

    DArray da_new(...);

but then in case of error we would need to return some dummy yet
recognizable value; this overloads the returned type, which would not
be feasible if all possible values already had meaningful semantics.
(pleonasm!) This strategy lacks generality and even clarity in some
(most?) cases.

The solution, which I had somehow originally discarded for reasons
now forgotten (hypothesis: laziness, unfounded efficiency concerns)
is precisely to separate status reporting and work.

Incoming commits will
- Fix incompatibilities newly introduced by these changes
- Modify other functions with similar issues