BAP-10564: Provide ability to automatically split functional tests into equal test suites
BAP-10564: Provide ability to automatically split functional tests into equal test suites

1) functional-x-of-y test suites were removed

Those suites caused a lot of issues when we miss some tests in suites (often issue for extensions), and they become broken afterward. For now, please use --testsuite=functional and use folder argument or filter tests using built-in PHPUnit functionality in case you need to run some specific tests, see examples below:

```
bin/phpunit --testsuite=functional
bin/phpunit --testsuite=functional vendor/oro/platform/src/Oro/Bundle/TestFrameworkBundle/Tests/Functional
bin/phpunit --testsuite=functional --filter="TestFrameworkBundle\\\\Tests\\\\Functional"
```

The bundle-based approach used on Travis and Jenkins. We collect a list of existing bundles and run them in parallel threads one by one.

2) GNU Parallel applied for Travis instead of custom shell scripts.

GNU Parallel job report printed in `if [ -z "$TRAVIS_SKIP" ]; then ./.travis/$TESTSUITE.sh after_script; fi` section.

Few tips how to use it for development (run commands from application folder). The 2017 year edition required, check it using `parallel --version` and do not forget to record environment using `parallel --record-env` command

# dependencies
COMPOSER=dev.json composer install -o --profile

PHPCS:
find -L vendor/oro -type f -name "*.php" | parallel --no-notice --gnu -k --lb --env _ --xargs --joblog app/logs/parallel.log php bin/phpcs {} -p --encoding=utf-8 --extensions=php --standard=vendor/oro/platform/build/phpcs.xml;

PHPMD for OroPlatform and OroCRM:
find -L vendor/oro -type f -name "*.php" | parallel --no-notice --gnu -k --lb --env _ --xargs --joblog app/logs/parallel.log 'files="{}"; php bin/phpmd ${files// /,} text vendor/oro/platform/build/phpmd.xml --suffixes php'

PHPMD for OroCommerce:
find -L vendor/oro -type f -name "*.php" | grep -i commerce | parallel --no-notice --gnu -k --lb --env _ --xargs --joblog app/logs/parallel.log 'files="{}"; php bin/phpmd ${files// /,} text vendor/oro/commerce/build_config/phpmd.xml --suffixes php'

# dependencies
npm install --prefix=vendor/oro/platform/build/

JSCS:
find -L vendor/oro -type f -name "*.js" | grep -iv node_modules | parallel --no-notice --gnu -k --lb --env _ --xargs --joblog app/logs/parallel.log 'vendor/oro/platform/build/node_modules/.bin/jscs {} --config=vendor/oro/platform/build/.jscsrc'

JSHINT:
find -L vendor/oro -type f -name "*.js" | grep -iv node_modules | parallel --no-notice --gnu -k --lb --env _ --xargs --joblog app/logs/parallel.log 'vendor/oro/platform/build/node_modules/.bin/jshint {} --config=vendor/oro/platform/build/.jshintrc --exclude-path=vendor/oro/platform/build/.jshintignore'

3) \Oro\Bundle\TestFrameworkBundle\Tests\Functional\InstallerTest added to check that installers are up to date with migrations and no uncovered migration left. Executed for installation only (jobs with upgrades skipped) and excluded from test suites by default. To run it locally use next command

bin/phpunit --testsuite functional --group=install

4) bootstrap.php files for PHPUnit were removed. Symfony PHPUnit Bridge handles bootstrapping now.

5) phpunit.xml.dist were actualized. Templates for those files created in package/platform/build folder

6) phpcpd was upgraded to dev-master branch, locked using hash until it's next release, allows us to use regexp in excludes, like

bin/phpcpd --min-lines 25 --verbose --progress --regexps-exclude=Migrations/Schema/,Entity/ vendor/oro/commerce

7) Segfaults. Switching to per bundle approach reduces segfault chances. If you still have segfaults on your build just add GDB=true variable to failed job and uncomment gdb package, you will get segfault report and will be able to detect wrong code.

8) New dependency, phploc/phploc under BSD 3-clause license, used to generate coverage report, will be applied in a few weeks to our CI flow
orocrm/OroCalendarBundle,orocrm/OroCalendarBundle,orocrm/OroCalendarBundle