Detect package name from a feature branch

Using ruby with regexp. to detect the package name from a
feature branch whose names follows some basic conventions.

If the environment variable PACKAGE_NAME is set it will be
used to check first. If the check fails the program will
send warning and continue with normal detection
_err will return 1
Only send warning if PACKAGE_BASE is set and invalid
s-makepkg supports new option

--current-tag : prints current tag and exit
--next-tag    : prints next tag and exit
Clean up output message

As _get_package_name alreadys prints out error message (if any)
we do not need to regenerate that msg.

FIXME: This should be part of Coding Convention
Allow version to have two number

Some problems (unzip) use two numbers in version string, some others
only use one (xterm). Changing from two/one form to three-form is not
simple bc it requires to update the PKGBUILD.

FIXME: Use x.y.z for all version numbers
+ comments for s-makepkg
+ comments and specs of s-makepkg
_get_package_name_from_tag

This is useful to update PACKAGE_BASE from PACKAGE_TAG
s-makepkg supports reference/absolute tag

* PACKAGE_TAG: this tag will be used, not check is performed
* PACKAGE_REF_TAG: this is a known tag where we start from

If both of them are not provided, the tag is detected from the
working environment -- this is actually a reference tag
Ruby scripts will print error message

This means that we donot to handle our own error message
when we use the functions
* _get_next_tag_from_tag
* _get_version_from_tag
* _get_package_name_from_tag
* _get_release_from_tag

This feature is mentioned in the commit messsage of
#0cba094edbae34cf6a39e3f8eebf8f09141b6bee
Print error if tag is not found on a branch
Change behavior of _get_package_name, _get_git_branch

* _get_git_branch : can be used to test if branch does exist
* _get_package_name: can read environment variables PACKAGE_TAG,
  PACKAGE_REF_TAG, PACKAGE_BASE. The order matters and it is
  described in doc. of "s-makepkg"
Clean up code
Handler error of pipelines

Using PIPESTATUS to handle errors of pipelines. This will help to
avoid the case when a reference tag is not found but the problem
continues to run
Fix terminology
+ the 8th difference between s-makepkg and makepkg
- function (selfupdate)

This function is used to update the script run.sh per-se.
It is almost useless now
+ run.sh detects function name from script name

This is known technique to avoid typing. The program tries
to detect its name from $0, and then it invokes the function
found in the main body
+ simple Makefile