Cleanup permalink generation

Fix permalink generation to not contain various smells. See verbose description in the last commit in this PR.
@dkubb I do not care if it looks nicer actually, I care about minimal AST.

```
bundle exec ruby-parse -e 'self.length'
(send
  (self) :length)
```

vs

```
bundle exec ruby-parse -e 'length()'.
(send nil :length)
```

As I also think we actually want to make `length` and `prefix` attr readers private `length = length()` is IMO the best option.