It is caused, as sam suggested, by the types not being public. They are inner types of the non-public "Program" class.
Make Program public or add .IncludingNonPublicTypes()
:
kernel.Bind(x => x
.FromThisAssembly()
.IncludingNonPublicTypes()
.SelectAllClasses()
.BindAllInterfaces());
(I have verified that either works, and your code doesn't).
And here is your official source: https://github.com/ninject/ninject.extensions.conventions/blob/master/src/Ninject.Extensions.Conventions.Test/IntegrationTests/NonPublicTypesTests.cs
Note: In older versions of Ninject this method was called IncludeNonePublicTypes
(None vs Non).