Add dirname_rec function

Returns an array of `dirnames` of a path.

*Parameters:*

  - the path to be analyzed
  - an array of paths to exclude (and where to stop recursing when met), defaults to []
  - an upper_limit setting the maximal depth for the top-level directory, defaults to '0'
  - a lower limit setting the maximal number of levels to go up from the given path, defaults to '0', meaning no limit

*Examples:*

    dirname_rec('/path/to/a/file.ext')

Would return: ['/path/to/a', '/path/to', '/path']

    dirname_rec('/path/to/a/file.ext', ['/path/to', '/path', '/etc'])

Would return: ['/path/to/a']

    dirname_rec('/path/to/a/file.ext', [], 1)

Would return: ['/path/to/a', '/path/to', '/path']

    dirname_rec('/path/to/a/file.ext', [], 0, 1)

Would return: ['/path/to/a']

- *Type*: rvalue